DevOps微課系列旨在幫助用戶學習DevOps實踐。
業務背景
問題一:
現有CI上的構建項目無法完成UT/FT/ST等測試及SM復雜度或Lizard圈復雜度檢查。
現有CI上的構建項目只能對版本控制源代碼,而測試代碼、數據庫腳本、構建和部署腳本、依賴的庫文件等,并且對構建產物的版本控制也同樣重要,只有這些內容都納入版本控制了,才能夠確保所有的開發、測試、運維活動能夠正常開展,系統能夠被完整的搭建。
普通pipeline無法對多個branch進行支持,無法對Gerrit trigger觸發的DailyCI、VerifyCI、MergeCI合并在同一個構建項目中,導致pipeline流水線很多,管理復雜。
問題二:
現有的版本發布是將版本編譯目標文件打包上傳制品庫,在環境部署過程中需要提前配置主機環境,如果環境較為復雜和繁瑣,給環境配置帶來不小的困難。采用docker方式打包環境和版本利于測試部署和現網部署。
解決思路
1.通過multibranch類型的pipeline job使得對于多個branch的支持更加簡單。
只需要創建一個multibranch job,jenkins將自動地為所有的branch創建job。
2.構建docker環境并打包編譯版本到鏡像中,將鏡像pull到制品庫。
實踐情況
解決方案中我們明確了gerrit上代碼分支管理策略,對不同的分支版本采用不同的分支策略,在實踐中我們將展示我們的三種代碼分支策略。
1.代碼分支策略1——開發分支與發布分支
2.代碼分支策略2——特性分支(臨時分支)
3.代碼分支策略3——修復Bug分支
解決方案
解決方案中我們還詳細闡述了我們的CI創建,包括Multibranch Pipeline創建,Jenkinsfile的撰寫、存放及調用,完整效果預覽。
1.新建multibranch pipeline job
2. 每個分支代碼的根目錄下存放Jenkinsfile,撰寫jekinsfile腳本
腳本分如下幾個部分:
1) Jekinsfile中添加接收gerrit 觸發事件的Properties
配置成功后在Branches中查看配置,會看到自動生成的配置觸發頁面為
2)獲取verifyCI需要的gerrit上change分支
3) 腳本處理不同的gerrit上的branch分支
4) 腳本處理不同的gerrit觸發事件
3.自動為每個branch生成job
在multibranch pipeline job保存后,jenkins自動地檢查所有的branch,且自動地為所有的branch創建job,當然前提是存在jenkinsfile文件。例如上面的job,自動地生成了文件夾*-AI-*-RUNNTIME,且在此文件夾下自動地為trunk和branch生成了job。如果在代碼庫上某個branch分支被刪除,multibranch pipeline也會自動檢測變化并刪除相應的job。
4.Scan Multibranch Pipeline Now第一次生成Multibranch Pipeline時,會自動掃描pipeline配置文件并建立相應的job,后續如果jenkinsfile文件有變更,也可以手動觸發掃描,日志輸出如下
5.這樣建立完成一個完整的MultiBranch Pipeline
不同任務運行效果圖如下所示,在同一個pipeline中可見并管理不同的gerrit觸發任務,比如patchset-created、change-merged和daily_ci。
6.Gtest+lconv代碼單元測試及覆蓋率檢查
輸出gtest單元測試及lcov代碼覆蓋率檢測結果
7.Docker鏡像通過制品庫發布
-
代碼
+關注
關注
30文章
4787瀏覽量
68591 -
Docker
+關注
關注
0文章
458瀏覽量
11853
原文標題:DevOps案例 | 基于Multibranch Pipeline+docker+gtest+lcov等集成代碼檢查構建發布實踐
文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論