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