詳解CI、CD相關概念

CI:持續集成(CONTINUOUS INTEGRATION)
基本概念
CI的全稱是Continuous Integration,表示持續集成。服務器

在CI環境中,開發人員將會頻繁地向主幹提交代碼。這些新提交的代碼在最終合併到主幹前,須要通過編譯和自動化測試流進行驗證。測試

持續集成過程當中很重視自動化測試驗證結果,以保障全部的提交在合併主線以後的質量問題,對可能出現的一些問題進行預警。開發

須要具有的條件
團隊須要爲每一個新功能、代碼改進、或者問題修復建立自動化測試用例。
你須要一個持續集成服務器,它能夠監控代碼提交狀況,對每一個新的提交進行自動化測試。
研發團隊須要儘量快的提交代碼,至少天天一次提交。
帶來的效益
經過自動化測試能夠提前拿到迴歸測試的結果,避免將一些問題提交到交付生產中。
發佈編譯將會更加容易,由於合併之初已經將全部問題都規避了。
減小工做問題切換,研發能夠很快得到構建失敗的消息,在開始下一個任務以前就能夠很快解決。
測試成本大幅下降,你的CI服務器能夠在幾秒鐘以內運行上百條測試。
你的QA團隊花費在測試上面的時間會大幅縮短,將會更加側重於質量文化的提高上面。
CD:持續部署(CONTINUOUS DEPLOYMENT)
基本概念
CD的全稱是Continuous Deployment,表示持續部署。文檔

在CD環境中,經過自動化的構建、測試和部署循環來快速交付高質量的產品。某種程度上表明瞭一個開發團隊工程化的程度,任何修改經過了全部已有的工做流就會直接和客戶見面,只有當一個修改在工做流中構建失敗才能阻止它部署到產品線。部署

持續部署是一個很優秀的方式,能夠加速與客戶的反饋循環,可是會給團隊帶來壓力,由於再也不有「發佈日」了。開發人員能夠專一於構建軟件,他們看到他們的修改在他們完成工做後幾分鐘就上線了。工作流

基本上,當開發人員在主分支中合併一個提交時,這個分支將被構建、測試,若是一切順利,則部署到生產環境中。產品

須要具有的條件
研發團隊測試理念比較完善。測試單元的健壯性直接決定你的交付質量。
你的文檔和部署頻率要保持一致。
特徵標誌成爲發佈重大變化過程的固有部分,以確保您能夠與其餘部門(支持,市場營銷,公關…)協調。
帶來的效益
發佈頻率更快,由於你不須要停下來等待發布。每一處提交都會自動觸發發佈流。
在小批量發佈的時候,風險下降了,發現問題也能夠很輕鬆的修復。
客戶天天均可以看到咱們的持續改進和提高,而不是每月或者每季度,或者每一年。
CD:持續交付(CONTINUOUS DELIVERY)
基本概念
持續交付的英文全稱是:Continuous delivery,縮寫也是CD,它是一種軟件工程手法。自動化

它可讓軟件產品的產出過程在一個短週期內完成,以保證軟件能夠穩定、持續的保持在隨時能夠釋出的情況。它的目標在於讓軟件的建置、測試與釋出變得更快以及更頻繁。這種方式能夠減小軟件開發的成本與時間,減小風險。io

有時候,持續交付也與持續部署混淆。持續部署意味着全部的變動都會被自動部署到生產環境中。持續交付意味着全部的變動均可以被部署到生產環境中,可是出於業務考慮,能夠選擇不部署。若是要實施持續部署,必須先實施持續交付。編譯

須要具有的條件你須要有強大的持續集成組件和足夠多的測試項能夠知足你代碼的需求。部署須要自動化。觸發是手動的,可是部署一旦開始,就不能人爲干預。你的團隊可能須要接受特性開關,沒有完成的功能模塊不會影響到線上產品。帶來的效益繁瑣的部署工做沒有了。你的團隊不在須要花費幾天的時間去準備一個發佈。你能夠更快的進行交付,這樣就加快了與客戶之間的反饋環。輕鬆應對小變動,加速迭代。

相關文章
相關標籤/搜索