CICD - 持續(xù)集成與持續(xù)交付

持續(xù)集成與持續(xù)交付是軟件開發(fā)和交付中的實踐。我們項目中一直在踐行持續(xù)集成(CI:Continuous Integration);持續(xù)交付(CD:Continuous Delivery)未能達到理想狀態(tài),只能實踐一部分。這篇文章用于總結(jié)CI/CD的實踐。

持續(xù)集成

什么是持續(xù)集成?

軟件開發(fā)中,集成是一個很可能發(fā)生未知錯誤的過程。持續(xù)集成是一種軟件開發(fā)實踐,希望團隊中的成員頻繁提交代碼到代碼倉庫,且每次提交都能通過自動化測試進行驗證,從而使問題盡早暴露和解決。

持續(xù)集成的好處是什么?

持續(xù)集成可以使問題盡早暴露,從而也降低了解決問題的難度,正如老馬所說,持續(xù)集成無法消除bug,但卻能大大降低修復(fù)的難度和時間。

如何做到持續(xù)集成?

首先,持續(xù)集成需要:

1. 單一的代碼倉庫,團隊成員都像該倉庫提交代碼;

2. 自動化構(gòu)建且構(gòu)建過程需要包含自動化測試;

3. 有單獨的集成機器用于構(gòu)建;

4. 保證構(gòu)建速度不要太慢(曾經(jīng)有一個項目構(gòu)建需要20分鐘,就會很痛苦);

5. 在類產(chǎn)品環(huán)境進行測試;

6. 能夠方便獲取最新的可執(zhí)行程序;

7. 可視化,大家都能看到構(gòu)建過程及結(jié)果;

8. 自動化部署。

其次,我們通過以下步驟進行持續(xù)集成:

1. 程序員將代碼下載到本地,并在完成修改后提交代碼;

2. CI服務(wù)器監(jiān)測代碼庫,并在有提交時自動觸發(fā);

3. CI服務(wù)器對代碼進行構(gòu)建,運行單元測試和集成測試;

4. CI服務(wù)器發(fā)布可部署的artefact用于后續(xù)測試,并加上本次構(gòu)建版本的標簽。

5. CI服務(wù)器通知團隊構(gòu)建成功或者失??;失敗發(fā)生時團隊需要盡快修復(fù),以免耽擱后續(xù)的持續(xù)集成過程,因為失敗時處于持續(xù)集成的暫停階段。

最后,需要就團隊責(zé)任達成共識:

1. 頻繁提交;

2. 提交之前確保測試通過;

3. 不在持續(xù)集成失敗時提交代碼;

4. 提交代碼后保證持續(xù)集成成功,不然不準回家??

持續(xù)交付

什么是持續(xù)交付?

持續(xù)交付是持續(xù)集成的擴展,指的是將通過自動化測試的軟件部署到產(chǎn)品環(huán)境。持續(xù)交付的本質(zhì)是把每個構(gòu)建成功的應(yīng)用更新交付給用戶使用。在持續(xù)交付的世界里,我們對完成的定義不是測試完成,而是交付到客戶手中。這里需要注意的是,CD代表持續(xù)交付(Continuous Delivery)而不是持續(xù)部署(Continuous Deploy),因為部署也包括部署到測試環(huán)境,而持續(xù)交付代表的是功能的上線,交付給用戶使用。

持續(xù)交付的好處是什么?

持續(xù)交付的好處在于快速獲取用戶反饋;適應(yīng)市場變化和商業(yè)策略的變化。開發(fā)團隊保證每次提交的修改都是可上線的修改,那么決定何時上線,上線哪部分功能則完全由產(chǎn)品業(yè)務(wù)團隊決定。

雖然持續(xù)交付有顯著的優(yōu)點,但也有不成立的時候,比如對于嵌入式系統(tǒng)的開發(fā),往往需要軟硬件的配合。

如何做到持續(xù)交付?

1. 保證每次提交的修改都是可上線的修改。

2. 完善的測試(包括單元測試,組件測試,驗收測試)來測試新功能和進行回歸測試;

3. 持續(xù)交付的前提條件是自動化的集成和部署;需要開發(fā)/測試/運維人員一起完成。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容