一、概念
傳統(tǒng)集成(Traditional integration)
傳統(tǒng)集成好比新零售v1.4開發(fā),但是涉及模塊眾多,例如運營中心經銷商管理、產品管理等,從而需要不同的RD負責不同的模塊,完成開發(fā)后進行集成,并提交代碼到倉庫,測試完成后部署上線。
隨著時間推移,業(yè)務的需求日益增多,無論新功能開發(fā)還是Bug修復,都需要對系統(tǒng)進行更新迭代。全部開發(fā)完成后再集成。
持續(xù)集成(Continuous integration)
對傳統(tǒng)集成,持續(xù)集成是重復的集成,適用于大項目,即團隊開發(fā)成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤(修復優(yōu)先級最高),當前步驟測試不參與。
持續(xù)集成目標并不能消除Bug,而是讓它們非常容易發(fā)現(xiàn)和快速改正,自動化測試case必須全部通過,從而保證高質量的快速迭代。
優(yōu)點:
快速發(fā)現(xiàn)錯誤。RD每完成一點代碼更新,就會從分支合并到Master,可以快速發(fā)現(xiàn)及定位錯誤。
防止分支大幅偏離主干。Master上有其他RD在不斷進行代碼更新,若分支上沒有及時合并,會導致以后集成的難度變大,甚至難以集成,導致集成后bug增多。
持續(xù)集成流程
持續(xù)交付(Continuous delivery)
持續(xù)交付的本質是把每個構建成功的工程進行更新,并交付給用戶使用,可理解為業(yè)務層面。在持續(xù)交付的過程中,我們對交付完成的定義不是測試完成,而是交付給客戶。持續(xù)交付代表的是功能的上線,交付給用戶使用。
優(yōu)點:
快速獲取反饋。RD交付給用戶可快速使用相關功能,并很快反饋結果。
適應市場變化和商業(yè)策略的變化。開發(fā)團隊保證每次提交的修改都是可上線的修改,那么決定何時上線,上線哪部分功能則完全由業(yè)務方決定。
持續(xù)交付流程
持續(xù)部署(Continuous deployment)
區(qū)別于持續(xù)交付,持續(xù)部署是在持續(xù)交付的基礎上,把部署到Prod環(huán)境過程通過自動化測試的軟件(例 Jenkins)自動構建、部署。盡早部署到生產環(huán)境,從而確保部分功能的使用。持續(xù)部署的目標是,代碼在任何時刻都是可部署的,可以進入生產階段。(注:在持續(xù)集成中問題需要最高優(yōu)先級修復)
持續(xù)部署流程
二、整體流程圖
傳統(tǒng)方式:
新方式:
三、持續(xù)測試(Continuous Tests)
測試是貫穿整個內部研發(fā)流程始終的,從持續(xù)集成到持續(xù)部署,都有測試的存在。
持續(xù)集成后,開啟單元測試,遍歷自動化測試腳本,自動化測試是持續(xù)集成的基礎,越靠前的測試越應該自動化,且全部Pass狀態(tài);
持續(xù)交付后,交付給QA后,QA對case的撰寫,Review,測試完成后發(fā)布到Prod環(huán)境。
引用:
https://www.mindtheproduct.com/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us;
http://www.itdecent.cn/p/67f345ebec9b;
《持續(xù)集成實踐》;