Git フックの概要

完了

Git フックは、チームがコードの品質、セキュリティ、および会社のルールに従う方法を変更できます。 Git フックを使用すると、プロセスの後半でこれらのチェックを行う代わりに、チームは開発ワークフローに自動チェックを直接追加できます。 これにより、チームやプロジェクト間で自動的に機能する品質基準が作成されます。

自動化が重要な理由

最新のソフトウェア開発には、あらゆる段階で正確に機能する自動化が必要です。 Git フックは、この自動化の基盤を提供します。 チームは、開発者の速度を低下させることなく自動的に実行される品質チェック、セキュリティ検証、ルール コンプライアンスを実装できます。

  • 問題を早期に確認する: Git フックは、チームが可能な限り早い時点で問題をキャッチする "シフト左" 戦略を使用するのに役立ちます。 これにより、問題の修正コストが削減され、ソフトウェアの全体的な品質が向上します。
  • セキュリティ優先モデル: ビジネス環境では、Git フックは自動セキュリティ ガードとして機能します。 開発プロセスを続行する前に、セキュリティ ポリシーに対してすべてのコード変更を確認します。
  • 自動ルール チェック: 厳格な規制に従う必要がある企業の場合、Git フックは自動コンプライアンス チェックを提供します。 これにより、すべてのコード変更が、手動レビューを必要とせずに必要な標準を満たされるようになります。

開発者コンピューター上のフック

クライアント側フックは、各開発者のコンピューターで実行されます。 彼らはすぐにフィードバックを提供し、悪いコードが共有コードリポジトリに入るのを防ぎます。

コミット前フックの機能

  • コード品質チェック: コミットを許可する前に、コードの書式設定、linting ルール、および会社のコーディング標準を自動的にチェックします。
  • セキュリティ スキャン: コードを入力する前に、自動セキュリティ スキャンを実行して、パスワード、API キー、および脆弱な依存関係を検索します。
  • テストの実行: 特定のテスト スイートを実行して、コードの変更によって既存の機能が中断されないようにします。
  • ドキュメント チェック: コードの変更に適切なドキュメントの更新が含まれているかどうかを確認し、ドキュメント標準を維持します。

メッセージ フックの自動化をコミットする

  • prepare-commit-msg: コミット メッセージを自動的に作成または変更して、会社の標準との一貫性を確保し、必要な情報を含めます。
  • commit-msg: コミット メッセージ形式を確認し、名前付け規則を適用し、作業項目または問題追跡システムへの適切なリンクを確認します。

コミット後の統合機能

  • 通知の自動化: チーム メンバー、プロジェクト管理システム、またはコラボレーション プラットフォームに自動通知を送信します。
  • ドキュメントの作成: コミット コンテンツに基づいて、プロジェクト ドキュメント、API 参照、または変更ログを自動的に更新します。
  • メトリック収集: 開発メトリックと分析を収集して、継続的な改善作業をサポートします。

高度なフック実装パターン

セキュリティに重点を置いたフック戦略

パスワードとシークレットの検出:

#!/bin/bash
# Check for passwords and secrets in code changes
if git diff --cached --name-only | xargs grep -l -E "(password|secret|api[_-]?key|token|credential)" 2>/dev/null; then
    echo "Security Alert: Found potential passwords or secrets in your changes"
    echo "Please review and remove sensitive information before committing"
    exit 1
fi

脆弱な依存関係の確認:

#!/bin/bash
# Check for security vulnerabilities in dependencies
if command -v npm &> /dev/null && [ -f package.json ]; then
    npm audit --audit-level=high
    if [ $? -ne 0 ]; then
        echo "Found security vulnerabilities in dependencies"
        echo "Please fix high-severity vulnerabilities before committing"
        exit 1
    fi
fi

品質チェックフック自動化

完全なコード品質チェック:

#!/bin/bash
# Check code quality for multiple programming languages
for file in $(git diff --cached --name-only --diff-filter=ACM); do
    case "$file" in
        *.js|*.ts)
            npx eslint "$file" || exit 1
            ;;
        *.py)
            python -m flake8 "$file" || exit 1
            python -m mypy "$file" || exit 1
            ;;
        *.cs)
            dotnet format --verify-no-changes --include "$file" || exit 1
            ;;
    esac
done

自動テスト実行戦略:

#!/bin/bash
# Smart test running based on what changed
changed_files=$(git diff --cached --name-only)
if echo "$changed_files" | grep -q "src/"; then
    echo "Running unit tests for changed components..."
    npm test -- --findRelatedTests $changed_files
    if [ $? -ne 0 ]; then
        echo "Tests failed. Please fix failing tests before committing"
        exit 1
    fi
fi

開発ツールとの統合

Azure DevOps の統合

作業項目のリンク チェック:

#!/bin/bash
# Make sure commit messages include Azure DevOps work item references
commit_message=$(cat "$1")
if ! echo "$commit_message" | grep -qE "#[0-9]+|AB#[0-9]+"; then
    echo "Commit message must reference a work item (e.g., #1234 or AB#1234)"
    exit 1
fi

ブランチ名のチェック:

#!/bin/bash
# Check branch naming rules align with Azure DevOps policies
current_branch=$(git branch --show-current)
if ! echo "$current_branch" | grep -qE "^(feature|bugfix|hotfix)/[a-z0-9-]+$"; then
    echo "Branch name must follow convention: feature/description, bugfix/description, or hotfix/description"
    exit 1
fi

パイプライン統合の自動化

これらのコマンドを使用するには、Azure DevOps CLI 拡張機能をインストールする必要があります。

ビルド検証トリガー:

#!/bin/bash
# Trigger Azure Pipelines validation builds for significant changes
if git diff --cached --name-only | grep -qE "\.(cs|js|ts|py)$"; then
    echo "Triggering validation build for code changes..."
    az pipelines build queue --definition-name "PR-Validation" --branch $(git branch --show-current)
fi

フックのカテゴリとユース ケース

クオリティゲートの自動化

品質ゲートの事前コミット:

  • コードの書式設定とスタイル チェック
  • 静的分析とリンティング
  • 変更されたコードに対して実行される単体テスト
  • ドキュメントの完全性チェック
  • パフォーマンスへの影響チェック

プッシュ前検証:

  • 実行中の統合テスト
  • セキュリティの脆弱性スキャン
  • 依存関係ライセンスのコンプライアンス チェック
  • ビルドの検証と成果物の作成
  • 展開の準備状況の確認

セキュリティとコンプライアンスの自動化

セキュリティ フックの実装:

  • パスワードとシークレットの検出
  • 依存関係の脆弱性チェック
  • コード セキュリティ パターンの検証
  • コンプライアンス 規則のチェック
  • 監査証跡の作成

コンプライアンス検証フック:

  • 規制要件のチェック
  • コードの署名と検証
  • 承認の検証を変更する
  • ドキュメント要件のチェック
  • 監査ログの作成

開発ワークフローの機能強化

開発者エクスペリエンスの最適化:

  • コミット メッセージの自動作成
  • ブランチ命名規則チェック
  • 作業項目の連携の自動化
  • コード レビューの割り当ての自動化
  • 進行状況の追跡とレポート

チーム コラボレーションの機能強化:

  • 通知と通信の自動化
  • ナレッジ共有のヘルプ
  • メトリックの収集とレポート
  • プロセス コンプライアンスの監視
  • 継続的な改善データ収集

Git フックは、開発チームにとって不可欠なオートメーション基盤を提供します。 開発者の生産性と満足を維持しながら、組織が品質、セキュリティ、コンプライアンスを開発ワークフローに直接追加するのに役立ちます。