1. 持續整合(Continuous Integration, CI)
目標:將開發者的代碼頻繁合併到主分支(如 prod
或 main
),並保證代碼的質量和穩定性。
- 核心過程:
- 開發者提交代碼到
develop
或其他開發分支。 - 觸發測試:
- 自動化工具執行構建和測試(單元測試、靜態代碼分析、Lint 檢查等)。
- 反饋結果:
- 測試成功:代碼準備好可以進行合併。
- 測試失敗:通知開發者修復問題。
- 合併代碼:
- 通過測試的代碼可以被手動或自動合併到主分支(如
prod
或main
)。
- 通過測試的代碼可以被手動或自動合併到主分支(如
- 開發者提交代碼到
簡單說:
- CI 的核心是讓多名開發者的代碼頻繁集成,並確保集成後的代碼仍然穩定。
- 不一定會部署代碼,重點是驗證代碼的品質。
2. 持續部署(Continuous Deployment, CD)
目標:將通過測試的代碼自動部署到伺服器或生產環境,實現真正的端到端自動化。
-
核心過程:
- 觸發部署:
- 通過 CI 驗證的代碼自動進入部署階段。
- 部署流程:
- 構建應用程序。
- 部署應用到測試環境或直接部署到生產環境(根據你的配置)。
- 上線驗證:
- 執行最小程度的檢查(如健康檢查)。
- 確保服務已正確運行。
- 觸發部署:
-
區分持續交付和持續部署:
- 持續交付:代碼準備好部署,但需要手動按下按鈕完成最後一步。
- 持續部署:整個過程完全自動化,包括上線。
簡單說:
- 持續部署的目的是讓已通過測試的代碼自動進入伺服器或生產環境。
流程結合範例
以下是一個典型的 CI/CD 流程:
-
提交代碼:
- 開發者將代碼提交到
develop
分支。
- 開發者將代碼提交到
-
持續整合(CI):
- 構建代碼。
- 運行單元測試、靜態分析。
- 通過測試後,代碼被合併到
prod
分支。
-
持續部署(CD):
- 自動構建應用。
- 自動將代碼部署到測試伺服器進行驗收測試。
- 如果啟用了持續部署,將代碼自動推送到生產環境。
小結
-
持續整合(CI):
- 核心是確保代碼在合併時的質量穩定。
- 重點在「構建、測試、合併」。
-
持續部署(CD):