0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實踐中我們將展示我們的三種代碼分支策略

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-03-24 09:52 ? 次閱讀

DevOps微課系列旨在幫助用戶學(xué)習(xí)DevOps實踐。

業(yè)務(wù)背景

問題一:

現(xiàn)有CI上的構(gòu)建項目無法完成UT/FT/ST等測試及SM復(fù)雜度或Lizard圈復(fù)雜度檢查。

現(xiàn)有CI上的構(gòu)建項目只能對版本控制源代碼,而測試代碼、數(shù)據(jù)庫腳本、構(gòu)建和部署腳本、依賴的庫文件等,并且對構(gòu)建產(chǎn)物的版本控制也同樣重要,只有這些內(nèi)容都納入版本控制了,才能夠確保所有的開發(fā)、測試、運維活動能夠正常開展,系統(tǒng)能夠被完整的搭建。

普通pipeline無法對多個branch進行支持,無法對Gerrit trigger觸發(fā)的DailyCI、VerifyCI、MergeCI合并在同一個構(gòu)建項目中,導(dǎo)致pipeline流水線很多,管理復(fù)雜。

問題二:

現(xiàn)有的版本發(fā)布是將版本編譯目標文件打包上傳制品庫,在環(huán)境部署過程中需要提前配置主機環(huán)境,如果環(huán)境較為復(fù)雜和繁瑣,給環(huán)境配置帶來不小的困難。采用docker方式打包環(huán)境和版本利于測試部署和現(xiàn)網(wǎng)部署。

解決思路

1.通過multibranch類型的pipeline job使得對于多個branch的支持更加簡單。

只需要創(chuàng)建一個multibranch job,jenkins將自動地為所有的branch創(chuàng)建job。

2.構(gòu)建docker環(huán)境并打包編譯版本到鏡像中,將鏡像pull到制品庫。

實踐情況

解決方案中我們明確了gerrit上代碼分支管理策略,對不同的分支版本采用不同的分支策略,在實踐中我們將展示我們的三種代碼分支策略。

1.代碼分支策略1——開發(fā)分支與發(fā)布分支

2.代碼分支策略2——特性分支(臨時分支)

3.代碼分支策略3——修復(fù)Bug分支

解決方案

解決方案中我們還詳細闡述了我們的CI創(chuàng)建,包括Multibranch Pipeline創(chuàng)建,Jenkinsfile的撰寫、存放及調(diào)用,完整效果預(yù)覽。

1.新建multibranch pipeline job

2. 每個分支代碼的根目錄下存放Jenkinsfile,撰寫jekinsfile腳本

腳本分如下幾個部分:

1) Jekinsfile中添加接收gerrit 觸發(fā)事件的Properties

配置成功后在Branches中查看配置,會看到自動生成的配置觸發(fā)頁面為

2)獲取verifyCI需要的gerrit上change分支

3) 腳本處理不同的gerrit上的branch分支

4) 腳本處理不同的gerrit觸發(fā)事件

3.自動為每個branch生成job

在multibranch pipeline job保存后,jenkins自動地檢查所有的branch,且自動地為所有的branch創(chuàng)建job,當(dāng)然前提是存在jenkinsfile文件。例如上面的job,自動地生成了文件夾*-AI-*-RUNNTIME,且在此文件夾下自動地為trunk和branch生成了job。如果在代碼庫上某個branch分支被刪除,multibranch pipeline也會自動檢測變化并刪除相應(yīng)的job。

4.Scan Multibranch Pipeline Now第一次生成Multibranch Pipeline時,會自動掃描pipeline配置文件并建立相應(yīng)的job,后續(xù)如果jenkinsfile文件有變更,也可以手動觸發(fā)掃描,日志輸出如下

5.這樣建立完成一個完整的MultiBranch Pipeline

不同任務(wù)運行效果圖如下所示,在同一個pipeline中可見并管理不同的gerrit觸發(fā)任務(wù),比如patchset-created、change-merged和daily_ci。

6.Gtest+lconv代碼單元測試及覆蓋率檢查

輸出gtest單元測試及l(fā)cov代碼覆蓋率檢測結(jié)果

7.Docker鏡像通過制品庫發(fā)布

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68240
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    453

    瀏覽量

    11792

原文標題:DevOps案例 | 基于Multibranch Pipeline+docker+gtest+lcov等集成代碼檢查構(gòu)建發(fā)布實踐

文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    我們如何開始代碼審查

    從一開始,開發(fā)者就會互相幫助,如果測試遇到了問題或是有新人加入到了團隊,領(lǐng)導(dǎo)或是資深開發(fā)者就會審查他們的代碼。除此之外,我們還聘請了外部專家進行安全代碼審查。系統(tǒng)發(fā)布后,
    發(fā)表于 12-16 15:51

    展示三種RS485應(yīng)用場景的半雙工參考設(shè)計包括BOM及層圖

    設(shè)計的隔離式電源進行快速評估和設(shè)計。此外,用戶指南中的測試結(jié)果還將展示針對此設(shè)計所執(zhí)行的 IEC61000-4-2 ESD 和 IEC61000-4-5 浪涌測試。主要特色一項設(shè)計展示
    發(fā)表于 09-21 09:15

    隨機動力系統(tǒng)怎么實現(xiàn)策略搜索?

    隨機輸入使我們的模型能夠自動捕獲復(fù)雜的噪聲模式,提高基于模型的模擬質(zhì)量,并在實踐中制定出更好的策略。
    發(fā)表于 08-12 07:07

    三種提高Python代碼性能的簡便方法

      在互聯(lián)網(wǎng)編程語言盛行的今天,Python是比較流行的編程語言之一。但很多程序員對于Python代碼性能的方法并不了解。今天這里主要為大家介紹三種提高Python代碼性能的簡便方法,即是一是基準
    發(fā)表于 08-03 18:37

    什么是回歸測試及為什么它在軟件開發(fā)實踐中占如此重要的地位?

    確定每個軟件版本的穩(wěn)定性。這是一個反復(fù)的過程,一直持續(xù)到項目達到開發(fā)結(jié)束或維護結(jié)束為止。在其他工作流程,回歸測試是開發(fā)人員日常工作。實際上,可以說在迭代和敏捷過程,大多數(shù)測試是回歸測試。在繼續(xù)進行之前,讓我們看一下什么是回歸
    發(fā)表于 12-21 07:52

    python編寫條件分支的最佳實踐

    這段代碼最大的問題,就是過于直接翻譯了原始的條件分支要求,導(dǎo)致短短十幾行代碼包含了有層嵌套分支。這樣的
    發(fā)表于 04-21 15:20

    ADμC812 芯片實踐中幾點注意

    ADμC812 芯片實踐中幾點注意
    發(fā)表于 05-16 14:16 ?10次下載

    EDA 技術(shù)在教學(xué)實踐中的應(yīng)用2

    EDA 技術(shù)在教學(xué)實踐中的應(yīng)用2 摘 要: EDA 在電子技術(shù)教學(xué)實踐中的應(yīng)用是現(xiàn)代教育發(fā)展的一趨勢, 本文通過數(shù)字式測溫儀這一綜合性設(shè)計實例,比較全面地說明
    發(fā)表于 12-07 13:50 ?0次下載

    DevOps案例旨在幫助用戶在實踐中更好的運用DevOps

    基于此種情況,我們提出的一模式是,MergeCI由代碼審查人員在Gerrit上打出+2分來觸發(fā),只有到MergeCI運行通過,代碼才會被推入庫
    的頭像 發(fā)表于 04-11 09:31 ?3741次閱讀
    DevOps案例旨在幫助用戶在<b class='flag-5'>實踐中</b>更好的運用DevOps

    極管三種工作狀態(tài)特點分析及判斷

    極管有放大、飽和、截止三種工作狀態(tài),放大電路極管是否處于放大狀態(tài)或處于何種工作狀態(tài),對于學(xué)生是一個難點。筆者在長期的教學(xué)實踐中發(fā)現(xiàn),
    的頭像 發(fā)表于 09-28 09:11 ?18.7w次閱讀
    <b class='flag-5'>三</b>極管<b class='flag-5'>三種</b>工作狀態(tài)特點分析及判斷

    剖析智能制造關(guān)于“輕與重”的實踐中的誤區(qū)

    智能制造無疑是建設(shè)制造強國重中之重的核心策略。但還有很多制造企業(yè)存在不少關(guān)于“輕與重”的認識與實踐中的誤區(qū)!
    的頭像 發(fā)表于 02-20 10:33 ?3367次閱讀

    測試工程師的三種分支

    測試技術(shù)在新環(huán)境下產(chǎn)生一奇妙的變革:出現(xiàn)了三種分支,可能有些人清楚,有些人糊涂,而另有些人投入,那就是根據(jù)業(yè)務(wù)驅(qū)動的測試執(zhí)行,根據(jù)行業(yè)的通性的測試服務(wù)及他山之石可以攻玉的產(chǎn)品評測。
    的頭像 發(fā)表于 09-12 10:29 ?3524次閱讀

    設(shè)計模式最佳實踐探索—策略模式

    根據(jù)不同的應(yīng)用場景與意圖,設(shè)計模式主要分為創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式類。本文主要探索行為型模式策略模式如何更好地應(yīng)用于實踐中。
    的頭像 發(fā)表于 10-31 14:24 ?911次閱讀

    軟件代碼結(jié)構(gòu)化覆蓋測試-分支覆蓋

    本篇我們介紹分支覆蓋,從測試技術(shù)對代碼的測試程度上來說,在復(fù)雜代碼,分支覆蓋比語句覆蓋效果要好
    的頭像 發(fā)表于 09-01 11:34 ?636次閱讀
    軟件<b class='flag-5'>代碼</b>結(jié)構(gòu)化覆蓋測試-<b class='flag-5'>分支</b>覆蓋

    三種LED接線:串聯(lián)、并聯(lián)和串并聯(lián),我們該如何選?

    三種LED接線:串聯(lián)、并聯(lián)和串并聯(lián),我們該如何選?
    的頭像 發(fā)表于 12-08 17:21 ?2409次閱讀
    <b class='flag-5'>三種</b>LED接線:串聯(lián)、并聯(lián)和串并聯(lián),<b class='flag-5'>我們</b>該如何選?