CI 與 CD 有什麼區別

2021-08-21 13:02:43 字數 2308 閱讀 8650

ci, cd and cd

ci很容易理解,就是持續整合。但是cd既可以指**持續交付,也可理解為**持續部署。ci和cd之間有很多相似的部分,但是也有很大的區別。

持續整合(continuous integration)

在持續整合環境中,開發人員將會頻繁的提交**到主幹。這些新提交在最終合併到主線之前,都需要通過編譯和自動化測試流進行驗證。這樣做是基於之前持續整合過程中很重視自動化測試驗證結果,以保障所有的提交在合併主線之後的質量問題,對可能出現的一些問題進行預警。

持續交付(continuous delivery)

持續交付就是講我們的應用發布出去的過程。這個過程可以確保我們盡可能快的實現交付。這就意味著除了自動化測試,我們還需要有自動化的發布流,以及通過乙個按鍵就可以隨時隨地實現應用的部署上線。

通過持續交付,您可以決定每天,每週,每兩周發布一次,這完全可以根據自己的業務進行設定。

但是,如果您真的希望體驗持續交付的優勢,就需要先進行小批量發布,盡快部署到生產線,以便在出現問題時方便進行故障排除。

持續部署(continuous deployment)

如果我們想更加深入一步的話,就是持續部署了。通過這個方式,任何修改通過了所有已有的工作流就會直接和客戶見面。沒有人為干預(沒有一鍵部署按鈕),只有當乙個修改在工作流中構建失敗才能阻止它部署到產品線。

持續部署是乙個很優秀的方式,可以加速與客戶的反饋迴圈,但是會給團隊帶來壓力,因為不再有「發布日」了。開發人員可以專注於構建軟體,他們看到他們的修改在他們完成工作後幾分鐘就上線了。基本上,當開發人員在主分支中合併乙個提交時,這個分支將被構建、測試,如果一切順利,則部署到生產環境中。

合併ci cd and cd?

當然,正如我所說,他們每部分都更加接近生產環境。你可以構建自己的持續整合環境,然後,一旦團隊適應,你可以新增持續交付流,最後,可以新增持續部署流到整個工作流中。

舉例ci, cd and cd 流水線

到底值不值這樣做呢?

持續整合:

你需要具備哪些條件:

你的團隊需要為每個新功能,**改進,或者問題修復建立自動化測試用例。

你需要乙個持續整合伺服器,它可以監控**提交情況,對每個新的提交進行自動化測試。

研發團隊需要盡可能快的提交**,至少每天一次提交。

你能獲得什麼呢?

通過自動化測試可以提早拿到回歸測試的結果,避免將一些問題提交到交付生產中

發布編譯將會更加容易,因為合併之初已經將所有問題都規避了

減少工作問題切換,研發可以很快獲得構建失敗的訊息,在開始下乙個任務之前就可以很快解決。

測試成本大幅降低-你的ci伺服器可以在幾秒鐘之內執行上百條測試。

你的qa團隊花費在測試上面的時間會大幅縮短,將會更加側重於質量文化的提公升上面。

持續交付

需要具備什麼條件?

你需要有強大的持續整合元件和足夠多的測試項可以滿足你**的需求

部署需要自動化。觸發是手動的,但是部署一旦開始,就不能人為干預。

你的團隊可能需要接受特性開關,沒有完成的功能模組不會影響到線上產品。

你能收穫什麼?

繁瑣的部署工作沒有了。你的團隊不在需要花費幾天的時間去準備乙個發布。

你可以更快的進行交付,這樣就加快了與客戶之間的反饋環。

輕鬆應對小變更,加速迭代

持續部署

需要具備的條件:

研發團隊測試理念比較完善。測試單元的健壯性直接決定你的交付質量。

你的文件和部署頻率要保持一致。

特徵標誌成為發布重大變化過程的固有部分,以確保您可以與其他部門(支援,市場營銷,公關…)協調。

可以獲得什麼?

發布頻率更快,因為你不需要停下來等待發布。每一處提交都會自動觸發發布流。

在小批量發布的時候,風險降低了,發現問題也可以很輕鬆的修復。

客戶每天都可以看到我們的持續改進和提公升,而不是每個月或者每季度,或者每年。

如前所述,您可以採用持續整合,持續交付和持續部署。你怎麼做取決於你的需求和你的業務情況。如果你剛剛開始乙個專案,並且還沒有客戶,那麼你就可以去建立這些工作流,最好是將這三個方面都實現,並且在你的專案迭代和需求增長中同時迭代它們。如果您已經有乙個生產專案,那麼您可以一步一步地分階段去實現他們。

與 有什麼區別

一 簡要說明 按位與 a b是把a 和b都轉換成二進位制數然後再進行與的運算 邏輯與 a b 就是當且僅當兩個運算元均為 true 時,其結果才為 true 只要有乙個為零,a b 就為零。例如 a b 9 8 1001 1000 結果是1000 a b 9 8 結果是1 對每乙個都判斷 只要前面是...

與 有什麼區別

按位與 a b是把a和b都轉換成二進位制數然後再進行與的運算 邏輯與 a b就是當且僅當兩個運算元均為 true時,其結果才為 true 只要有乙個為零,a b就為零。例如 a b 9 8 1001 1000 結果是1000 a b 9 8 結果是1 對每乙個都判斷 只要前面是false就輸出fal...

與 有什麼區別

一 簡要說明 按位與 a b是把a和b都轉換成二進位制數然後再進行與的運算 邏輯與 a b就是當且僅當兩個運算元均為 true時,其結果才為 true 只要有乙個為零,a b就為零。例如 a b 9 8 1001 1000 結果是1000 a b 9 8 結果是1 對每乙個都判斷 只要前面是fals...