持續整合與灰度發布

2021-08-20 21:39:26 字數 1681 閱讀 7526

持續整合

(continuous integration,簡稱ci)是一種軟體開發實踐,即團隊開發成員經常整合它們的工作,通常每個成員每天至少整合一次,也就意味著每天可能會發生多次整合。每次整合都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡快地發現整合錯誤。許多團隊發現這個過程可以大大減少整合的問題,讓團隊能夠更快的開發內聚的軟體。

持續整合的目的與價值:

持續整合的目的不是減少build失敗的次數,而是盡早發現問題,在最短的時間內解決問題,減少風險和浪費。從而讓產品開發流程更加敏捷,縮短產品開發周期,在產品上線後,讓使用者用得更加順暢。

在沒有應用持續整合之前,傳統的開發模式是專案一開始就劃分模組,每個開發人員分別負責乙個模組,等所有的**都開發完成之後再整合到一起提交給測試人員,隨著軟體技術隊的發展,軟體已經不能簡單地通過劃分模組的方式來開發,需要專案內部相互協作,劃分模組這種傳統的模式的弊端也越來越明顯。由於很多bug在專案早期的設計、編碼階段就引入,到最後整合測試時才發現問題,開發人員需要花費大量的時間來定位bug,加上軟體的複雜性,bug的定位就更難了,甚至出現不得不調整底層架構的情況。這種情況的發生不僅僅對測試進度造成影響,而且會拖長整個專案週期。

而持續整合可以有效解決軟體開發過程中的許多問題,在整合測試階段之前就幫助開發人員發現問題,從而可以有效的確保軟體質量,減小專案的風險,使軟體開發團隊從容的面對各種變化。持續整合報告中可以體現目前專案進度,哪部分需要已經實現,哪些**已經通過自動化測試,**質量如何,讓開發團隊和專案組了解專案的真實狀況。

持續整合的優點:

1、快速發現錯誤。每完成一點更新,就整合到主幹,可以快速發現錯誤,定位錯誤也比較容易。

2、防止分支大幅偏離主幹。如果不是經常整合,主幹又在不斷更新,會導致以後整合的難度變大,甚至難以整合。

持續整合的一些原則:

1.所有的開發人員需要在本地機器上做本地構建,然後再提交的版本控制庫中,從而確保他們的變更不會導致持續整合失敗。

2.開發人員每天至少向版本控制庫中提交一次**。

3.開發人員每天至少需要從版本控制庫中更新一次**到本地機器。

4.需要有專門的整合伺服器來執行整合構建,每天要執行多次構建。

5.每次構建都要100%通過。

6.每次構建都可以生成可發布的產品。

7.修復失敗的構建是優先順序最高的事情。

網際網路產品的發布大多都是做到這裡就直接上線,替換了原有的版本,這種跳躍式的發布是非常危險的,如果產品影響面大,對專案成員的壓力是非常大的。灰度發布

在敏捷開發領域,取消專職測試以後,灰度發布就更加重要。一旦新版本出現問題,能夠通過我們的abtest系統馬上將所有流量切回穩定的舊版本。

這樣做的好處是:

1、即時生

效,無需發布,快速響應。

2、可以漸進地調整比例。

3、分流的維度豐富多樣。

本文參考:

持續整合和灰度發布

持續整合 continuous integration,簡稱ci 是一種軟體開發實踐,即團隊開發成員經常整合它們的工作,通常每個成員每天至少整合一次,也就意味著每天可能會發生多次整合。每次整合都通過自動化的構建 包括編譯,發布,自動化測試 來驗證,從而盡快地發現整合錯誤。許多團隊發現這個過程可以大大...

從持續整合到持續發布

持續整合作為一種很好的軟體工程實踐被很多團隊所採用,和其他一些先進的實踐一樣,它最終的目的一定是服務於產品的。產品的價值最終體現在使用者體驗的提公升,而這個的前提就是產品的每一次更新能夠及時地傳遞給使用者,對於運維團隊來說就是更快地在生產環境中部署最新的產品,對於研發團隊來說就是更頻繁地發布可以工作...

使用Jenkins進行持續整合與發布

我們基於jenkins的ci cd流程如下所示。流程說明 應用構建和發布流程說明。使用者向gitlab提交 中必須包含dockerfile 將 提交到遠端倉庫 使用者在發布應用時需要填寫git倉庫位址和分支 服務型別 服務名稱 資源數量 例項個數,確定後觸發jenkins自動構建 jenkins的c...