詳解CI CD相關概念

2021-09-24 12:59:41 字數 2222 閱讀 6947

在軟體的編譯發布的過程中,經常能夠看到ci、cd這樣的詞語。其實他們是專業的縮寫短語,這裡介紹下他們的概念和區別。

敏捷軟體開發

敏捷軟體開發,英文全稱:agile software development,是從2023年代開始逐漸引起廣泛關注的新型軟體開發方式,是一種應對快速變化的需求的一種軟體開發能力。它們的具體名稱、理念、過程、術語都不盡相同,相對於「非敏捷」,更強調程式設計師團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文件更有效)、頻繁交付新的軟體版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的**編寫和團隊組織方法,也更注重軟體開發過程中人的作用。

ci:持續整合(continuous integration)

基本概念

ci的全稱是continuous integration,表示持續整合。

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

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

需要具備的條件

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

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

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

帶來的效益

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

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

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

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

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

cd:持續部署(continuous deployment)

基本概念

cd的全稱是continuous deployment,表示持續部署。

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

持續部署是乙個很優秀的方式,可以加速與客戶的反饋迴圈,但是會給團隊帶來壓力,因為不再有「發布日」了。開發人員可以專注於構建軟體,他們看到他們的修改在他們完成工作後幾分鐘就上線了。

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

需要具備的條件

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

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

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

帶來的效益

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

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

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

cd:持續交付(continuous delivery)

基本概念

持續交付的英文全稱是:continuous delivery,縮寫也是cd,它是一種軟體工程手法。

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

有時候,持續交付也與持續部署混淆。持續部署意味著所有的變更都會被自動部署到生產環境中。持續交付意味著所有的變更都可以被部署到生產環境中,但是出於業務考慮,可以選擇不部署。如果要實施持續部署,必須先實施持續交付。

需要具備的條件

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

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

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

帶來的效益

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

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

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

詳解CI CD相關概念

在軟體的編譯發布的過程中,經常能夠看到ci cd這樣的詞語。其實他們是專業的縮寫短語,這裡介紹下他們的概念和區別。敏捷軟體開發,英文全稱 agile software development,是從1990年代開始逐漸引起廣泛關注的新型軟體開發方式,是一種應對快速變化的需求的一種軟體開發能力。它們的具...

詳解CI CD相關概念

在軟體的編譯發布的過程中,經常能夠看到ci cd這樣的詞語。其實他們是專業的縮寫短語,這裡介紹下他們的概念和區別。敏捷軟體開發 敏捷軟體開發,英文全稱 agile software development,是從1990年代開始逐漸引起廣泛關注的新型軟體開發方式,是一種應對快速變化的需求的一種軟體開發...

DNS服務相關概念詳解

dns 網域名稱解析,bind berkeley internet name domain http http協議,apache,lamp,nginx engeer x lnmp,mysql,php,varnish 與web快取相關的 cdn dns view varnish file server...