GitLab Flow:靈活的分支管理模型

GitLab Flow:靈活的分支管理模型

GitLab Flow 流程圖

前言

GitLab Flow 是一種靈活的分支管理模型,結合了 Git Flow 和 GitHub Flow 的優點,適用於需要快速集成和持續發佈的專案。它由 GitLab 提出,強調上游優先的原則,並支持多環境的部署策略,適合中大型專案和快速迭代的開發環境。

GitLab Flow 的基本概念

GitLab Flow 的核心思想是:

  1. 只存在一個主分支 master,它是所有分支的上游。
  2. 創建新的分支來開發新功能或修復 bug。
  3. 當開發完成時,發起一個 Merge Request 請求合併。
  4. 在 Merge Request 中進行代碼審查和測試。
  5. 如果代碼審查通過,就可以合併到 master 分支。
  6. 合併後,master 分支上的代碼可以部署到生產環境。

Git Flow 流程圖

GitLab Flow 大略流程

graph TD
    A[Master Branch] --> B[Create Feature Branch]
    B --> C[Develop Feature]
    C --> D[Push Feature Branch] 
    D --> E[Create Merge Request]
    E --> F[Code Review]
    F --> G{Approval?}
    G -->|Yes| H[Merge to Master]
    G -->|No| I[Request Changes]
    H --> J[Deploy to Pre-Production]
    J --> K{Testing Successful?}
    K -->|Yes| L[Deploy to Production]
    K -->|No| M[Fix Issues]

Git Flow 流程圖

如何使用 GitLab Flow

  1. master 分支創建一個新的分支:

    1
    git checkout -b feature/new-feature
  2. 在新分支上進行開發和提交:

    1
    2
    3
    git add .
    git commit -m "Add new feature"
    git push origin feature/new-feature
  3. 在 GitLab 上發起一個 Merge Request:

    • 在 GitLab 頁面上,點擊 Merge Request 按鈕。
    • 填寫 MR 標題和描述,描述本次 MR 的內容。
  4. 在 MR 頁面進行代碼審查和測試:

    • 其他開發者可以查看變更內容並進行代碼審查。
    • 可以運行自動化測試來確保新功能的正確性。
  5. 合併 MR 到 master 分支:

    • 如果代碼審查通過,就可以點擊 Merge 按鈕將分支合併到 master
    • 合併後,master 分支上的代碼就是最新的版本。
  6. 部署到生產環境:

    • 合併到 master 後,可以自動部署到生產環境。
    • 可以結合 CI/CD 工具來自動化部署流程。

各類分支的用途

Master 分支

  • 用途:存放生產環境的穩定版本。
  • 特點:所有的變更都必須通過測試後才能合併到此分支。

Feature 分支

  • 用途:用於開發新功能或修復特定問題。
  • 命名規則feature/<功能名稱>,例如 feature/login
  • 生命周期:從 master 分支創建,完成開發後合併回 master
  • 最佳實踐:每個 Feature 分支應專注於一個單一功能,避免功能之間的耦合,以便更容易進行代碼審查和測試。

Environment 分支

  • 用途:用於不同的部署環境,如 pre-productionproduction
  • 特點:這些分支用於測試和驗證功能,確保在正式環境中穩定運行。

Release 分支

  • 用途:準備新版本的發佈,進行最終測試和修正。
  • 命名規則release/<版本號>,例如 release/1.0.0
  • 生命周期:從 master 分支創建,完成後合併回 master

優點和缺點

優點

  • 靈活性高:適合快速迭代和持續發佈的開發環境。例如,團隊可以根據不同的需求快速創建和刪除分支,適應市場變化。
  • 上游優先:確保 master 分支始終處於可部署狀態,所有合併的變更都經過測試。
  • 支持多環境:可以根據需要創建不同的環境分支,如開發、預發和生產環境。

缺點

  • 不適合小型專案:對於小型專案,過多的分支管理可能會增加複雜性,導致協作困難。
  • 依賴持續集成:需要穩定的 CI/CD 流程支持,否則可能影響部署效率。

實際案例

案例一:持續發布的 Web 應用開發

在一個需要頻繁發布新功能的 Web 應用專案中,團隊採用 GitLab Flow 來管理分支和發佈流程。每個新功能都在獨立的 Feature 分支上開發,完成後通過 Merge Request 合併到 master 分支,並立即部署到生產環境。這種方式使得團隊能夠快速迭代,迅速響應市場需求。

案例二:版本發佈管理

在一個大型專案中,團隊使用 GitLab Flow 來管理版本發佈。每個穩定版本都從 master 創建一個新的版本分支,並在該分支上進行修復和更新。當發現 bug 時,團隊會從版本分支創建 Hotfix 分支,修復完成後合併到 master 和版本分支,確保所有環境都保持最新狀態。

總結

GitLab Flow 提供了一套靈活且結構化的分支管理模型,適合需要快速迭代和持續發佈的專案。通過明確分支的用途和流程,GitLab Flow 有助於提升團隊協作效率,降低發佈風險。它強調上游優先,並支持多環境的部署策略,能夠幫助開發團隊更好地管理代碼和版本。

參考資源


GitLab Flow:靈活的分支管理模型
https://terryyaowork.github.io/devOps/20240915/3670510823/
作者
Terry Yao
發布於
2024年9月15日
許可協議