我們經常會聽到持續集成(Continuous Integration)、持續交付(Continuous Delivery)和持續部署(Continuous Deployment)這三個名詞,這三個名詞之間有什么聯系,有什么區別,以及為什么要做持續集成,持續交付,讓我們帶著疑問往下看。
圖片來源
三者關系圖
持續集成[Continuous Integration]
持續集成是已代碼的提交活動來觸發的。持續集成涉及到一下幾個步驟:
- 開發人員提交代碼到代碼倉庫
- 持續集成服務器檢測到代碼更新,從代碼倉庫拉取最新的代碼
- 代碼更新完畢后,持續集成服務器自動進行編譯、代碼靜態檢查以及測試(單元測試)
Continuous Integration
持續交付[Continuous Integration]
持續交付是建立在持續集成成功的基礎上的,比如代碼編譯成功,并且通過了單元測試,這個時候我們可以把代碼部署到測試環境(也就是和生產環境相近的環境)在這里我們完成更多的測試(自動化契約測試、自動化UI測試等),通過一系列測試后,通過手動的方式把代碼部署到生產環境上。
Continuous Integration
持續部署[Continuous Integration]
持續部署是在持續交付成功的基礎上,通過自動化的方式把代碼部署到生產環境上。
Continuous Integration
CI/CD的價值
“Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.” — Martin Fowler
Martin Fowler曾經說過持續集成并不能消除BUG,但是能容易的發現BUG,修復BUG,從而提升產品的質量。那么CI/CD給團隊帶來了哪些價值:
- 減少風險。CI保證開發人員提交的代碼是安全可靠的。開發人員每次提交代碼都會觸發CI,從而會自動進行靜態代碼檢查,單元測試。CD階段接口測試,UI測試都是自動化進行。整個交付標準化,可重復并且可靠
- 快速發布。整個流程自動化發布,提升了效率,能夠更快的迭代
- 整個流程可視化。通過CI/CD工具,整個流程可視化,我們可以清楚的看到哪個階段失敗
- 更好的團隊協作方式。開發,QA以及運維緊密聯系在一起,更加高效
參考資料
- https://www.mindtheproduct.com/2016/02/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/
- http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
- https://zhuxingsheng.github.io/2017/09/16/comon-sense-thre-continuous-integration,-continuous-delivery,-continuous-deployment/