持續集成、持續交付和持續部署
持續集成
Continuous Integration:持續集成,簡稱CI,是軟件開發周期的一種實踐,把代碼倉庫(Gitlab或者Github)、構建工具(如Jenkins)和測試工具(SonarQube)集成在一起,頻繁的將代碼合並到主干然后自動進行構建和測試。簡單來說持續集成就是一個監控版本控制系統中代碼變化的工具,當發生變化是可以自動編譯和測試以及執行后續自定義動作。

其實這里最關鍵的是自動化測試,這個是最難的,因為測試涉及內容很多。
持續交付
Continuous Delivery:持續交付,簡稱CD,是在CI的基礎進行了擴展,在CI環節完成了軟件構建和測試工作並形成了新的版本,那么接下來就要進行交付,而這里的交付並不是交付到生產環境,而是類生產環境(STAGING),我們可以理解為灰度環境或者預發環境,進而接受部分真實流量的測試。如果沒有問題的話則通過手動的方式部署到生產環境。如下圖所示:

持續部署
Continuous Deployment:持續部署,簡稱CD,它是在持續交付的基礎上打通最后一公里的工作,就是把手動部署到生產環境的方式升級為自動部署。看下圖和上圖在最后部署到生產環境中的區別。

總結
持續集成、持續交付和持續部署其目的是減少代碼改動到投入生產的所需時間,提早發現風險、減少QA的測試時長、減少運維的人工干預。整體上是一個提效的過程。當然它也不是萬能的。
參考
The Product Managers’ Guide to Continuous Delivery and DevOps
