基本概念
CI/CD旨在通過自動化流程提高代碼質量、加快發布速度
- CI (Continuous Integration,持續集成)
- CD(Continuous Delivery/Deployment,持續交付/持續部署)
CI 持續集成
目標
頻繁加粗樣式將代碼合并到主干、盡早發現錯誤
流程
- 開發者提交代碼到共享倉庫,如GitLab/GitHub
- 自動出發構建,編譯、依賴安裝
- 運行自動化測試,單元測試、集成測試
優勢
快速發現Bug、減少集成沖突、提高代碼質量
CD 持續交付/部署
持續交付
手動通過CI后,自動打包成可發布的版本,如Docker鏡像
人工審批后手動觸發部署到生產環境
持續部署
在CI基礎上,自動部署到生產環境
適用于高度自動化的云原生項目,如Netflix、GitHub
優勢
快速發布、降低風險、靈活回滾
CI/CD工作流
以一個Web應用為例
- 代碼提交??觸發CI流水線
- CI階段:
- 安裝依賴
npm install
- 運行測試
npm test
- 構建Docker鏡像
- CD階段:
- 推動鏡像到倉庫,如Docker Hub
- 自動部署到測試環境
- 手動批準??部署到生產環境(持續交付)
- 或自動部署(持續部署)
常見的CI/CD工具
GitLab CI
特點:與GitLab深度集成,較簡單
部署方式:Runner基于容器/K8s
適用場景:GitLab用戶、云原生項目
Jenkins
特點:支持多插件,需額外配置,如GitHub插件,較復雜
部署方式:Master/Agent架構
適用場景:復雜企業級CI/CD、多平臺集成