1. 持續整合(Continuous Integration, CI)#

目標:將開發者的代碼頻繁合併到主分支(如 prodmain),並保證代碼的質量和穩定性。

  • 核心過程
    1. 開發者提交代碼到 develop 或其他開發分支。
    2. 觸發測試
      • 自動化工具執行構建和測試(單元測試、靜態代碼分析、Lint 檢查等)。
    3. 反饋結果
      • 測試成功:代碼準備好可以進行合併。
      • 測試失敗:通知開發者修復問題。
    4. 合併代碼
      • 通過測試的代碼可以被手動或自動合併到主分支(如 prodmain)。

簡單說

  • CI 的核心是讓多名開發者的代碼頻繁集成,並確保集成後的代碼仍然穩定。
  • 不一定會部署代碼,重點是驗證代碼的品質。

2. 持續部署(Continuous Deployment, CD)#

目標:將通過測試的代碼自動部署到伺服器或生產環境,實現真正的端到端自動化。

  • 核心過程

    1. 觸發部署
      • 通過 CI 驗證的代碼自動進入部署階段。
    2. 部署流程
      • 構建應用程序。
      • 部署應用到測試環境或直接部署到生產環境(根據你的配置)。
    3. 上線驗證
      • 執行最小程度的檢查(如健康檢查)。
      • 確保服務已正確運行。
  • 區分持續交付和持續部署

    • 持續交付:代碼準備好部署,但需要手動按下按鈕完成最後一步。
    • 持續部署:整個過程完全自動化,包括上線。

簡單說

  • 持續部署的目的是讓已通過測試的代碼自動進入伺服器或生產環境。

流程結合範例#

以下是一個典型的 CI/CD 流程:

  1. 提交代碼

    • 開發者將代碼提交到 develop 分支。
  2. 持續整合(CI)

    • 構建代碼。
    • 運行單元測試、靜態分析。
    • 通過測試後,代碼被合併到 prod 分支。
  3. 持續部署(CD)

    • 自動構建應用。
    • 自動將代碼部署到測試伺服器進行驗收測試。
    • 如果啟用了持續部署,將代碼自動推送到生產環境。

小結#

  • 持續整合(CI)

    • 核心是確保代碼在合併時的質量穩定。
    • 重點在「構建、測試、合併」。
  • 持續部署(CD)

    • 核心是將通過測試的代碼部署到伺服器。
    • 重點在「構建、部署、上線驗證」。