當(dāng)我們在談?wù)摤F(xiàn)代的軟件編譯和發(fā)布流程的時(shí)候你虹,經(jīng)常會聽到CI和CD這樣的縮寫短語。這里我們將給大家介紹它們之間的區(qū)別和聯(lián)系喂击。
CI, CD AND CD
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)他們。
譯者:張鵬飛