這時(shí)候需要改進(jìn)你的 CI 系統,建立標準化的環(huán)境部署順序,在 Workflow 中增加部署預生產(chǎn)環(huán)境并進(jìn)行灰度集成測試的流程,做好線(xiàn)上環(huán)境部署后的回歸測試。到這里,已經(jīng)真正做到了持續交付。
持續交付并不是指軟件每一個(gè)改動(dòng)都要盡快部署到產(chǎn)品環(huán)境中,它指的是任何的代碼修改都可以在任何時(shí)候實(shí)施部署。而“持續部署”,即自動(dòng)部署到生產(chǎn)環(huán)境中而無(wú)需手工干預:得到一個(gè)版本后,自動(dòng)部署該版本到生產(chǎn)環(huán)境中。實(shí)踐證明,相對獨立快速地部署新功能是一個(gè)核心競爭力,可以減輕大規模功能變更的風(fēng)險。
持續部署,是相對成熟的持續集成系統。
“開(kāi)發(fā)人員提交代碼,持續集成服務(wù)器獲取代碼,執行單元測試,根據測試結果決定是否部署到預演環(huán)境,如果成功部署到預演環(huán)境,進(jìn)行整體驗收測試,如果測試通過(guò),自動(dòng)部署到產(chǎn)品環(huán)境,全程自動(dòng)化高效運轉。”
隨著(zhù)項目和團隊規模增長(cháng),模塊之間依賴(lài)關(guān)系變得復雜,如何確保代碼質(zhì)量的同時(shí),保證代碼構建的一致性和穩定性,成為一大挑戰。Docker 可以方便地以“容器化”的方式部署,它就像集裝箱一樣,打包了所有依賴(lài),在其他服務(wù)器上部署很容易,不至于換服務(wù)器后發(fā)現各種配置文件散落一地,這樣就解決了編譯時(shí)依賴(lài)和運行時(shí)依賴(lài)的問(wèn)題。
還有一個(gè)問(wèn)題,開(kāi)發(fā)的分支越來(lái)越多,每個(gè)活躍分支都進(jìn)行環(huán)境部署和集成測試,對持續集成環(huán)境的維護成本也就越高。而 Docker 的快速啟動(dòng)和鏡像倉庫是天生為 CI/CD 設計的,以前啟動(dòng)一個(gè)虛擬機需要幾分鐘,而啟動(dòng) Docker 只需要幾秒鐘,讓并行的持續集成才能成為可能。
目前,比較常見(jiàn)的基于 Docker 進(jìn)行持續集成的流程如下:
原文轉自:http://blog.flow.ci/ci_advancedguide/