0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

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

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

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ā)布

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

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    我們如何開始代碼審查

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

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

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

    隨機(jī)動(dòng)力系統(tǒng)怎么實(shí)現(xiàn)策略搜索?

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

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

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

    三種訪問過程映像的方法

    硬實(shí)時(shí)的需求。用戶可以通過python等高級(jí)語言編寫程序,并且可以通過存儲(chǔ)器的過程映像便捷的寫入或者讀取所有當(dāng)前過程值。本文介紹從過程映像訪問數(shù)據(jù)的三種方法:直接從文件
    發(fā)表于 02-02 16:40

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

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

    python編寫條件分支的最佳實(shí)踐

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

    ADμC812 芯片實(shí)踐中幾點(diǎn)注意

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

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

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

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

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

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

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

    測試工程師的三種分支

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

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

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

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

    本篇我們介紹分支覆蓋,從測試技術(shù)對(duì)代碼的測試程度上來說,在復(fù)雜代碼,分支覆蓋比語句覆蓋效果要好
    的頭像 發(fā)表于 09-01 11:34 ?754次閱讀
    軟件<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 ?3087次閱讀
    <b class='flag-5'>三種</b>LED接線:串聯(lián)、并聯(lián)和串并聯(lián),<b class='flag-5'>我們</b>該如何選?

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品