DevOps微課系列旨在幫助用戶學(xué)習(xí)DevOps實(shí)踐。
業(yè)務(wù)背景
問題一:
現(xiàn)有CI上的構(gòu)建項(xiàng)目無法完成UT/FT/ST等測試及SM復(fù)雜度或Lizard圈復(fù)雜度檢查。
現(xiàn)有CI上的構(gòu)建項(xiàng)目只能對(duì)版本控制源代碼,而測試代碼、數(shù)據(jù)庫腳本、構(gòu)建和部署腳本、依賴的庫文件等,并且對(duì)構(gòu)建產(chǎn)物的版本控制也同樣重要,只有這些內(nèi)容都納入版本控制了,才能夠確保所有的開發(fā)、測試、運(yùn)維活動(dòng)能夠正常開展,系統(tǒng)能夠被完整的搭建。
普通pipeline無法對(duì)多個(gè)branch進(jìn)行支持,無法對(duì)Gerrit trigger觸發(fā)的DailyCI、VerifyCI、MergeCI合并在同一個(gè)構(gòu)建項(xiàng)目中,導(dǎo)致pipeline流水線很多,管理復(fù)雜。
問題二:
現(xiàn)有的版本發(fā)布是將版本編譯目標(biāo)文件打包上傳制品庫,在環(huán)境部署過程中需要提前配置主機(jī)環(huán)境,如果環(huán)境較為復(fù)雜和繁瑣,給環(huán)境配置帶來不小的困難。采用docker方式打包環(huán)境和版本利于測試部署和現(xiàn)網(wǎng)部署。
解決思路
1.通過multibranch類型的pipeline job使得對(duì)于多個(gè)branch的支持更加簡單。
只需要?jiǎng)?chuàng)建一個(gè)multibranch job,jenkins將自動(dòng)地為所有的branch創(chuàng)建job。
2.構(gòu)建docker環(huán)境并打包編譯版本到鏡像中,將鏡像pull到制品庫。
實(shí)踐情況
解決方案中我們明確了gerrit上代碼分支管理策略,對(duì)不同的分支版本采用不同的分支策略,在實(shí)踐中我們將展示我們的三種代碼分支策略。
1.代碼分支策略1——開發(fā)分支與發(fā)布分支
2.代碼分支策略2——特性分支(臨時(shí)分支)
3.代碼分支策略3——修復(fù)Bug分支
解決方案
解決方案中我們還詳細(xì)闡述了我們的CI創(chuàng)建,包括Multibranch Pipeline創(chuàng)建,Jenkinsfile的撰寫、存放及調(diào)用,完整效果預(yù)覽。
1.新建multibranch pipeline job
2. 每個(gè)分支代碼的根目錄下存放Jenkinsfile,撰寫jekinsfile腳本
腳本分如下幾個(gè)部分:
1) Jekinsfile中添加接收gerrit 觸發(fā)事件的Properties
配置成功后在Branches中查看配置,會(huì)看到自動(dòng)生成的配置觸發(fā)頁面為
2)獲取verifyCI需要的gerrit上change分支
3) 腳本處理不同的gerrit上的branch分支
4) 腳本處理不同的gerrit觸發(fā)事件
3.自動(dòng)為每個(gè)branch生成job
在multibranch pipeline job保存后,jenkins自動(dòng)地檢查所有的branch,且自動(dòng)地為所有的branch創(chuàng)建job,當(dāng)然前提是存在jenkinsfile文件。例如上面的job,自動(dòng)地生成了文件夾*-AI-*-RUNNTIME,且在此文件夾下自動(dòng)地為trunk和branch生成了job。如果在代碼庫上某個(gè)branch分支被刪除,multibranch pipeline也會(huì)自動(dòng)檢測變化并刪除相應(yīng)的job。
4.Scan Multibranch Pipeline Now第一次生成Multibranch Pipeline時(shí),會(huì)自動(dòng)掃描pipeline配置文件并建立相應(yīng)的job,后續(xù)如果jenkinsfile文件有變更,也可以手動(dòng)觸發(fā)掃描,日志輸出如下
5.這樣建立完成一個(gè)完整的MultiBranch Pipeline
不同任務(wù)運(yùn)行效果圖如下所示,在同一個(gè)pipeline中可見并管理不同的gerrit觸發(fā)任務(wù),比如patchset-created、change-merged和daily_ci。
6.Gtest+lconv代碼單元測試及覆蓋率檢查
輸出gtest單元測試及l(fā)cov代碼覆蓋率檢測結(jié)果
7.Docker鏡像通過制品庫發(fā)布
-
代碼
+關(guān)注
關(guān)注
30文章
4841瀏覽量
69217 -
Docker
+關(guān)注
關(guān)注
0文章
492瀏覽量
12013
原文標(biāo)題:DevOps案例 | 基于Multibranch Pipeline+docker+gtest+lcov等集成代碼檢查構(gòu)建發(fā)布實(shí)踐
文章出處:【微信號(hào):ZTEdeveloper,微信公眾號(hào):中興開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
我們如何開始代碼審查
可展示三種RS485應(yīng)用場景的半雙工參考設(shè)計(jì)包括BOM及層圖
隨機(jī)動(dòng)力系統(tǒng)怎么實(shí)現(xiàn)策略搜索?
三種提高Python代碼性能的簡便方法
三種訪問過程映像的方法
什么是回歸測試及為什么它在軟件開發(fā)實(shí)踐中占如此重要的地位?
python編寫條件分支的最佳實(shí)踐
EDA 技術(shù)在教學(xué)實(shí)踐中的應(yīng)用2
三極管三種工作狀態(tài)特點(diǎn)分析及判斷
![<b class='flag-5'>三</b>極管<b class='flag-5'>三種</b>工作狀態(tài)特點(diǎn)分析及判斷](https://file.elecfans.com/web1/M00/64/FF/o4YBAFujhKGATLTkAAAsxR2D8Wo894.jpg)
評(píng)論