Git 勾點簡介

已完成

Git 鉤子可以改變團隊處理程式碼品質、安全性和遵守公司規則的方式。 Git 掛鉤可讓團隊將自動檢查直接新增至開發工作流程中,而不是在流程後期檢查這些內容。 這創建了跨團隊和項目自動運行的質量標準。

為什麼自動化很重要

現代軟體開發需要在每個階段精確運作的自動化。 Git 鉤子為這種自動化提供了基礎。 它們允許團隊實施自動運行的品質檢查、安全驗證和規則合規性,而不會減慢開發人員的速度。

  • 及早檢查問題:Git 鉤子幫助團隊使用「左移」策略,儘早發現問題。 這降低了解決問題的成本並提高了整體軟體品質。
  • 安全第一模型:在商業環境中,Git 鉤子充當自動安全衛士。 他們根據安全策略檢查每個程式碼變更,然後再允許其繼續完成開發過程。
  • 自動規則檢查:對於必須遵守嚴格法規的公司,Git hooks提供了自動合規性檢查。 這確保了每次程式碼變更都符合必要的標準,而無需手動審查。

開發人員電腦上的掛鉤

用戶端掛鉤會在每個開發人員的電腦上執行。 它們提供即時回饋並防止不良程式碼進入共享程式碼儲存庫。

預先提交勾點功能

  • 代碼質量檢查: 在允許提交之前自動檢查代碼格式、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

鉤子類別和用例

品質閘門自動化

提交前檢查質量閘道

  • 程式碼格式和樣式檢查
  • 靜態分析和 Lint 分析
  • 針對已變更的程式碼執行單元測試
  • 文件完整性檢查
  • 效能影響檢查

推播前驗證

  • 整合測試運行
  • 安全漏洞掃描
  • 相依性授權合規性檢查
  • 組建驗證和成品建立
  • 部署準備檢查

安全與合規自動化

安全鉤子實作

  • 密碼和秘密偵測
  • 相依性弱點檢查
  • 程式碼安全型樣驗證
  • 合規性規則檢查
  • 稽核追蹤檔案的建立

合規性驗證掛鉤

  • 監管要求檢核
  • 程式碼簽署和驗證
  • 變更批准驗證
  • 文件需求檢查
  • 稽核記錄建立

開發工作流程的提升

開發者體驗優化

  • 自動提交訊息建立
  • 分支命名規則檢查
  • 工作項目連結自動化
  • 程式碼審查作業指派自動化
  • 進度追蹤和報告

團隊協作增強:

  • 通知和通訊自動化
  • 知識分享協助
  • 指標收集和報告
  • 流程合規性監控
  • 持續改進數據收集

Git 鉤子為開發團隊提供了必要的自動化基礎。 它們可協助組織將品質、安全性和合規性直接新增至開發工作流程中,同時保持開發人員的生產力和滿意度。