這里的CD可對應多個英文名稱,持續交付Continuous Delivery和持續部署Continuous Deployment。下面我們分別來看看上面是持續交付和持續部署。
持續交付
持續交付(CD)實際上是 CI 的擴展,其中軟件交付流程進一步自動化,以便隨時輕松地部署到生成環境中。 成熟的持續交付方案也展示了一個始終可部署的代碼庫。使用 CD 后,軟件發布將成為一個沒有任何緊張感的例行事件。 開發團隊可以在日常開發的任何時間進行產品級的發布,而不需要詳細的發布方案或者特殊的后期測試。
完成 CI 中構建及單元測試和集成測試的自動化流程后,持續交付可自動將已驗證的代碼發布到存儲庫。為了實現高效的持續交付流程,務必要確保 CI 已內置于開發管道。持續交付的目標是擁有一個可隨時部署到生產環境的代碼庫。
在持續交付中,每個階段(從代碼更改的合并,到生產就緒型構建版本的交付)都涉及測試自動化和代碼發布自動化。在流程結束時,運維團隊可以快速、輕松地將應用部署到生產環境中或發布給最終使用的用戶。
CD 集中依賴于部署流水線,團隊通過流水線自動化測試和部署過程。此流水線是一個自動化系統, 可以針對構建執行一組漸進的測試套件。CD 具有高度的自動化,并且在一些云計算環境中也易于配置。在流水線的每個階段,如果構建無法通過關鍵測試會向團隊發出警報。否則,將繼續進入下一個測試, 并在連續通過測試后自動進入下一個階段。流水線的最后一個部分會將構建部署到和生產環境等效的環境中。 這是一個整體的過程,因為構建、部署和環境都是一起執行和測試的,它能讓構建在實際的生產環境可部署和可驗證。
持續部署
持續部署擴展了持續交付,以便軟件構建在通過所有測試時自動部署。在這樣的流程中, 不需要人為決定何時及如何投入生產環境。CI/CD 系統的最后一步將在構建后的組件/包退出流水線時自動部署。 此類自動部署可以配置為快速向客戶分發組件、功能模塊或修復補丁,并準確說明當前提供的內容。采用持續部署的組織可以將新功能快速傳遞給用戶,得到用戶對于新版本的快速反饋,并且可以迅速處理任何明顯的缺陷。 用戶對無用或者誤解需求的功能的快速反饋有助于團隊規劃投入,避免將精力集中于不容易產生回報的地方。
隨著 DevOps 的發展,新的用來實現 CI/CD 流水線的自動化工具也在不斷涌現。這些工具通常能與各種開發工具配合, 包括像 GitHub 這樣的代碼倉庫和 Jira 這樣的 bug 跟蹤工具。此外,隨著 SaaS 這種交付方式變得更受歡迎, 許多工具都可以在現代開發人員運行應用程序的云環境中運行,例如 GCP 和 AWS。但是對于一個成熟的CI/CD管道(Pipeline)來說,最后的階段是持續部署。作為持續交付——自動將生產就緒型構建版本發布到代碼存儲庫——的延伸,持續部署可以自動將應用發布到生產環境。