更新時(shí)間:2023-02-04 11:04:33作者:佚名
如果對(duì)devops有一定了解的朋友,一定會(huì)經(jīng)常聽到這幾個(gè)關(guān)鍵詞:持續(xù)集成、持續(xù)交付和持續(xù)部署,那么這幾個(gè)有什么關(guān)聯(lián)、區(qū)別呢,下面內(nèi)容教大家怎么區(qū)分~
持續(xù)集成
持續(xù)集成強(qiáng)調(diào)開發(fā)人員提交了新代碼之后,立刻進(jìn)行構(gòu)建、(單元)測(cè)試。根據(jù)測(cè)試結(jié)果,我們可以確定新代碼和原有代碼能否正確地集成在一起。
持續(xù)交付
持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實(shí)運(yùn)行環(huán)境的「類生產(chǎn)環(huán)境」(production-like environments)中。比如,我們完成單元測(cè)試后,可以把代碼部署到連接數(shù)據(jù)庫(kù)的 Staging 環(huán)境中更多的測(cè)試。如果代碼沒有問題,可以繼續(xù)手動(dòng)部署到生產(chǎn)環(huán)境中。
持續(xù)部署
持續(xù)部署則是在持續(xù)交付的基礎(chǔ)上,把部署到生產(chǎn)環(huán)境的過程自動(dòng)化。
舉個(gè)栗子:
你開了一家公司,雇了很多碼農(nóng)在一起寫代碼。
你說(shuō),要用 Gitlab 做代碼管理。當(dāng)一個(gè)碼農(nóng)在自己的開發(fā)機(jī)上寫好代碼之后,要合并到主分支里,他首先要發(fā)起一個(gè) Merge Request(MR),這會(huì)在一個(gè)特定服務(wù)器上觸發(fā)一次對(duì)他提交的代碼的檢查,包括代碼格式檢查、依賴關(guān)系檢查以及單元測(cè)試等一系列檢查,等通過了全部檢查,他就可以將代碼合并到主分支,否則他需要按照錯(cuò)誤提示進(jìn)行修改,然后發(fā)起新一輪的檢查。然后呢,每天晚上 10 點(diǎn)會(huì)有一個(gè)定時(shí)任務(wù)從主分支上拿最新的代碼,進(jìn)行編譯打包部署是什么意思,最后將打包好的程序推送到一個(gè)服務(wù)器上保存,這個(gè)服務(wù)器叫做 Artifact Repository。
你又說(shuō),要每天將當(dāng)天打包好的程序部署到測(cè)試環(huán)境上。也就是說(shuō),一個(gè)碼農(nóng)晚上 10 點(diǎn)之前提交了代碼,那他第二天就可以在測(cè)試環(huán)境上看到自己新提交的代碼的效果了。
你還說(shuō),每一個(gè)月要在生產(chǎn)環(huán)境上部署一個(gè)穩(wěn)定的發(fā)布版本。
以上三段內(nèi)容是一個(gè)軟件從開發(fā)到部署的流程的簡(jiǎn)單描述,也分別對(duì)應(yīng)持續(xù)集成、持續(xù)交付以及持續(xù)部署。
總結(jié):集成、交付和部署是軟件開發(fā)到發(fā)布流程中的不同階段。那所謂的持續(xù)是相對(duì)于過去的流程提出的。過去的流程是所有人寫好代碼之后再進(jìn)行合并,然后再進(jìn)行測(cè)試,最后再發(fā)布。這種流程會(huì)把風(fēng)險(xiǎn)堆到軟件發(fā)布前的最后階段。那持續(xù)的概念就是,做一點(diǎn)就馬上遞交給下一個(gè)流程,這樣能夠盡早地發(fā)現(xiàn)并解決問題。
PS:純干貨部署是什么意思,大佬們走波關(guān)注唄~
2023-02-04 10:01
2023-02-03 20:01
2023-02-03 10:13