CI很容易理解檩咱,就是持續(xù)集成舀寓。但是CD既可以指代碼持續(xù)交付斑唬,也可理解為代碼持續(xù)部署市埋。CI和CD之間有很多相似的部分黎泣,但是也有很大的區(qū)別。
持續(xù)集成(CONTINUOUS INTEGRATION)
在持續(xù)集成環(huán)境中缤谎,開發(fā)人員將會頻繁的提交代碼到主干抒倚。這些新提交在最終合并到主線之前,都需要通過編譯和自動化測試流進(jìn)行驗(yàn)證坷澡。這樣做是基于之前持續(xù)集成過程中很重視自動化測試驗(yàn)證結(jié)果托呕,以保障所有的提交在合并主線之后的質(zhì)量問題,對可能出現(xiàn)的一些問題進(jìn)行預(yù)警频敛。
持續(xù)交付(CONTINUOUS DELIVERY)
持續(xù)交付就是講我們的應(yīng)用發(fā)布出去的過程项郊。這個(gè)過程可以確保我們盡可能快的實(shí)現(xiàn)交付。這就意味著除了自動化測試姻政,我們還需要有自動化的發(fā)布流呆抑,以及通過一個(gè)按鍵就可以隨時(shí)隨地實(shí)現(xiàn)應(yīng)用的部署上線。
通過持續(xù)交付汁展,您可以決定每天鹊碍,每周,每兩周發(fā)布一次食绿,這完全可以根據(jù)自己的業(yè)務(wù)進(jìn)行設(shè)置侈咕。
但是,如果您真的希望體驗(yàn)持續(xù)交付的優(yōu)勢器紧,就需要先進(jìn)行小批量發(fā)布耀销,盡快部署到生產(chǎn)線,以便在出現(xiàn)問題時(shí)方便進(jìn)行故障排除铲汪。
持續(xù)部署(CONTINUOUS DEPLOYMENT)
如果我們想更加深入一步的話熊尉,就是持續(xù)部署了。通過這個(gè)方式掌腰,任何修改通過了所有已有的工作流就會直接和客戶見面狰住。沒有人為干預(yù)(沒有一鍵部署按鈕),只有當(dāng)一個(gè)修改在工作流中構(gòu)建失敗才能阻止它部署到產(chǎn)品線齿梁。
持續(xù)部署是一個(gè)很優(yōu)秀的方式催植,可以加速與客戶的反饋循環(huán),但是會給團(tuán)隊(duì)帶來壓力勺择,因?yàn)椴辉儆小鞍l(fā)布日”了创南。開發(fā)人員可以專注于構(gòu)建軟件,他們看到他們的修改在他們完成工作后幾分鐘就上線了省核「逭蓿基本上,當(dāng)開發(fā)人員在主分支中合并一個(gè)提交時(shí)气忠,這個(gè)分支將被構(gòu)建邻储、測試未桥,如果一切順利,則部署到生產(chǎn)環(huán)境中芥备。
合并CI CD and CD?
當(dāng)然舌菜,正如我所說萌壳,他們每部分都更加接近生產(chǎn)環(huán)境。你可以構(gòu)建自己的持續(xù)集成環(huán)境日月,然后袱瓮,一旦團(tuán)隊(duì)適應(yīng),你可以添加持續(xù)交付流爱咬,最后尺借,可以添加持續(xù)部署流到整個(gè)工作流中。
舉例CI, CD and CD 流水線
到底值不值這樣做呢?
持續(xù)集成:
你需要具備哪些條件:
你的團(tuán)隊(duì)需要為每個(gè)新功能精拟,代碼改進(jìn)燎斩,或者問題修復(fù)創(chuàng)建自動化測試用例。
你需要一個(gè)持續(xù)集成服務(wù)器蜂绎,它可以監(jiān)控代碼提交情況栅表,對每個(gè)新的提交進(jìn)行自動化測試。
研發(fā)團(tuán)隊(duì)需要盡可能快的提交代碼师枣,至少每天一次提交怪瓶。
你能獲得什么呢?
通過自動化測試可以提早拿到回歸測試的結(jié)果践美,避免將一些問題提交到交付生產(chǎn)中
發(fā)布編譯將會更加容易洗贰,因?yàn)楹喜⒅跻呀?jīng)將所有問題都規(guī)避了
減少工作問題切換,研發(fā)可以很快獲得構(gòu)建失敗的消息陨倡,在開始下一個(gè)任務(wù)之前就可以很快解決敛滋。
測試成本大幅降低-你的CI服務(wù)器可以在幾秒鐘之內(nèi)運(yùn)行上百條測試。
你的QA團(tuán)隊(duì)花費(fèi)在測試上面的時(shí)間會大幅縮短玫膀,將會更加側(cè)重于質(zhì)量文化的提升上面矛缨。
持續(xù)交付
需要具備什么條件?
你需要有強(qiáng)大的持續(xù)集成組件和足夠多的測試項(xiàng)可以滿足你代碼的需求
部署需要自動化帖旨。觸發(fā)是手動的箕昭,但是部署一旦開始,就不能人為干預(yù)解阅。
你的團(tuán)隊(duì)可能需要接受特性開關(guān)落竹,沒有完成的功能模塊不會影響到線上產(chǎn)品。
你能收獲什么货抄?
繁瑣的部署工作沒有了述召。你的團(tuán)隊(duì)不在需要花費(fèi)幾天的時(shí)間去準(zhǔn)備一個(gè)發(fā)布朱转。
你可以更快的進(jìn)行交付,這樣就加快了與客戶之間的反饋環(huán)积暖。
輕松應(yīng)對小變更藤为,加速迭代
持續(xù)部署
需要具備的條件:
研發(fā)團(tuán)隊(duì)測試?yán)砟畋容^完善。測試單元的健壯性直接決定你的交付質(zhì)量夺刑。
你的文檔和部署頻率要保持一致缅疟。
特征標(biāo)志成為發(fā)布重大變化過程的固有部分,以確保您可以與其他部門(支持遍愿,市場營銷存淫,公關(guān)…)協(xié)調(diào)。
可以獲得什么沼填?
發(fā)布頻率更快桅咆,因?yàn)槟悴恍枰O聛淼却l(fā)布。每一處提交都會自動觸發(fā)發(fā)布流坞笙。
在小批量發(fā)布的時(shí)候岩饼,風(fēng)險(xiǎn)降低了,發(fā)現(xiàn)問題也可以很輕松的修復(fù)羞海。
客戶每天都可以看到我們的持續(xù)改進(jìn)和提升忌愚,而不是每個(gè)月或者每季度,或者每年却邓。
如前所述硕糊,您可以采用持續(xù)集成,持續(xù)交付和持續(xù)部署腊徙。你怎么做取決于你的需求和你的業(yè)務(wù)情況简十。如果你剛剛開始一個(gè)項(xiàng)目,并且還沒有客戶撬腾,那么你就可以去創(chuàng)建這些工作流螟蝙,最好是將這三個(gè)方面都實(shí)現(xiàn),并且在你的項(xiàng)目迭代和需求增長中同時(shí)迭代它們民傻。如果您已經(jīng)有一個(gè)生產(chǎn)項(xiàng)目胰默,那么您可以一步一步地分階段去實(shí)現(xiàn)他們。