持續整合
(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...