色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

8nfr_ZTEdevelop ? 來源:未知 ? 作者:李倩 ? 2018-04-11 09:31 ? 次閱讀

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

問題描述

Jenkins2.0 Pipeline框架iPipeline(即plll庫)對MergeCI的觸發條件的設置為Change merged模式且固定不變,即需要由代碼走查者+2分后,再由Core成員點擊Submit按鈕來將代碼推入庫,然后才來觸發MergeCI流程,該過程的VerifyCI和MergeCI流程如下圖所示:

結合上圖我們可以發現,這里有個問題是: 一旦代碼走查通過(+2分),然后Core成員通過(Submit)后,代碼立即入庫,然后觸發MergeCI流程,此時若MergeCI運行出錯,那錯誤此時已經入庫并且影響后續開發人員合入代碼。

再結合本項目協議開發自身的實際特點,很有可能VerifyCI通過后的MergeCI會和他人產生互相影響,這樣便可能導致主干分支代碼有錯,開發人員之間互相影響,最終影響代碼提交合入的效率。

基于此種情況,我們提出的一種模式是,MergeCI由代碼審查人員在Gerrit上打出+2分來觸發,只有到MergeCI運行通過,代碼才會被推入庫中,此種方式帶來的一個最直接的好處就是主干分支上的代碼永遠正確的,而且不會因為MergeCI報錯而影響他人合代碼,而且該方法帶來的另外一個好處便是無需設定關鍵角色來負責Submit代碼入庫,僅僅需要的是代碼走查人員即可,這樣也提高了自動化程度,節省人力。將該流程可以示意如下圖:

因此plll庫的這種MergeCI的設置方式并不滿足本項目,因此我們決定擴充plll庫對于MergeCI運行模式的支持。

優化實踐

通過重載了plll庫的屬性設置函數,加入了根據CI類型來完成MergeCI不同觸發條件的設置:

/**

* 工具名稱:set_default_properties

* 工具描述:設置默認的參數

* 參數說明:

* - citype : CI類型

* - args : 參數列表

**/

def set_default_properties(citype, args){

def buildParameters =[]

def buildTriggers =[]

set_parameters_properties(buildParameters, args)

set_cron_properties(buildTriggers, args)

set_gerrit_properties(citype, buildParameters, buildTriggers, args)

/* --------參數------- */

properties([

[$class:'GitLabConnectionProperty', gitLabConnection:''],

[$class:'RebuildSettings', autoRebuild:false, rebuildDisabled:false],

buildDiscarder(logRotator(artifactDaysToKeepStr:'', artifactNumToKeepStr:'', daysToKeepStr:'14', numToKeepStr:'100')),

parameters(buildParameters),

pipelineTriggers(buildTriggers)

])

/* 清空臨時變量 */

buildParameters=null

buildTriggers=null

return

}

/**

* 函數名稱:設置gerrit屬性

**/

def set_gerrit_properties(citype, buildParameters, buildTriggers, args)

{

// ...此處代碼省略...

if("verifyci"=="${citype}"){

gerritEvents =[

patchsetCreated(

excludeDrafts:false,

excludeNoCodeChange:true,

excludeTrivialRebase:false

),

draftPublished()

]

// 如果CI類型是MergeCI,則設置器觸發條件為Code-Review +2方式來觸發

}elseif("mergeci"=="${citype}"){

gerritEvents =[

commentAdded(commentAddedTriggerApprovalValue:'+2', verdictCategory:'Code-Review')

]

}

// ...此處代碼省略...

}

由代碼可知,在set_gerrit_properties函數中,做了特殊判斷,若是MergeCI,則單獨將其觸發條件設置為Code-Review +2,這樣便可以滿足需求。

使用舉例:

在MergeCI的Jenkinsfile中調用plll.set_default_properties設置項目屬性時明確指定mergeci類型即可,以本項目的Jenkinsfile代碼中設置默認屬性參數為例:

def set_default_properties(){

plll.set_default_properties("mergeci",[

/* 關聯gerrit */

gerrit:[

server:"${env.GERRIT_SERVER_NAME}",

projects:[[project:"${env.GERRIT_PROJECT}", branch:"${plll.getJobBaseName()}"]]

],

/* 自定義參數 */

parameters:[

choice(choices:'yes\nno', description:'清空編譯環境', name:'CLEAN_ALL'),

string(defaultValue:"${plll.getJobBaseName()}", description:'觸發分支',name:'BRANCH_TAG')

],

]);

}

除此之外,還需要在Jenkins系統管理中MergeCI的Gerrit Trigger設置中作如下圖所示的配置即可:

優缺點分析

1. 優點

開發人員互相獨立,別人錯誤的代碼無法入庫,不影響他人

主干分支代碼永遠正確,不影響別人拉代碼驗證和正常合入代碼

無需小組核心成員進行submit操作,MergeCI一旦運行正確,代碼則自動入庫

2. 缺點

原理決定了其無法并行,所以需要根據不同的項目情況酌情考慮。但是從本項目實際實踐的整局來看,本項目VerifyCI支持數個任務同時并發執行,而MergeCI排隊執行,但由于MergeCI執行較快,而且沖突很少,因此MergeCI的代碼都能逐個順利地合入,幸福感較以前有很大提升。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4782

    瀏覽量

    68545
  • devops
    +關注

    關注

    0

    文章

    113

    瀏覽量

    12020

原文標題:DevOps 案例 |Jenkins2.0 Pipeline框架(iPipeline)優化實踐之路(三)

文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DevOps擁抱日志管理系統ELK623淺析

    DevOps之擁抱日志管理系統ELK623
    發表于 07-15 06:06

    關于DevOps的詳解

    DevOps(Development和Operations)是一組過程、方法與系統的統稱,用于促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。它的出現是由于軟件
    發表于 09-28 17:02 ?0次下載

    DevOps工程師是干什么的

    我們之前已經聽到很多談論DevOpsDevOps世界的最新趨勢的事情,但是就DevOps工程師本身,到底干些什么呢?
    的頭像 發表于 09-24 16:37 ?5206次閱讀

    DevOps Foundation? 是什么?DevOps塑造著軟件世界的未來

    DevOps Foundation? 課程旨在培養個人對 DevOps Foundation? 概念的理解以及 DevOps 如何用于提升軟件開發人員和 IT 運維人員之間溝通、合作和
    的頭像 發表于 04-16 12:46 ?5546次閱讀

    深度解讀什么是DevOp以及DevOps的技術實現

    的技術實現方式幾個方面,結合實驗展現的方式,讓讀者真正理解 DevOps 的含義。 DevOps 是什么 DevOps 的 Dev 指的 Development,Ops 指的是
    的頭像 發表于 06-21 17:46 ?4136次閱讀
    深度解讀什么是DevOp以及<b class='flag-5'>DevOps</b>的技術實現

    什么是DevOpsDevOps的優勢以及生命周期

    在大多數情況下,軟件應用程序開發由于其規范性和復雜性而變得很耗時。為了在短時間內交付高質量應用程序,軟件開發人員正在遵循一套通用的實踐,稱為DevOps生命周期。那么,DevOps在軟件應用程序開發
    的頭像 發表于 06-29 17:19 ?5406次閱讀
    什么是<b class='flag-5'>DevOps</b>?<b class='flag-5'>DevOps</b>的優勢以及生命周期

    云原生技術下的華為云DevOps實踐之路

    DevOps最早在2009年被人提出,愿景非常美好,但真正實施起來困難重重。 隨著近幾年微服務、容器等技術的興起,使得企業對DevOps的需求更加迫切,實施變得更加容易,DevOps越來越被接受
    的頭像 發表于 12-06 16:52 ?2654次閱讀

    項目實施DevOps時,我們是如何做測試的

    ,因此想趁熱打鐵,就DevOps模式下如何做測試,談一談自己的認知。 DevOps有什么特征 DevOps是一系列軟件開發實踐,強調開發人員(Dev)和運維人員(Ops)之間的溝通合作
    的頭像 發表于 12-16 17:33 ?2333次閱讀
    項目實施<b class='flag-5'>DevOps</b>時,我們是如何做測試的

    ks-devops基于Kubernetes的DevOps平臺

    gitee-ks-devops.zip
    發表于 04-28 10:39 ?1次下載
    ks-<b class='flag-5'>devops</b>基于Kubernetes的<b class='flag-5'>DevOps</b>平臺

    DevOps的基本知識介紹

    根據Google DORA( DevOps、Research與Assessment)團隊最新的《DevOps現狀》報告,在DevOps方面成效不佳的團隊很少能夠在6個月內將軟件投入生產運營。
    的頭像 發表于 06-01 10:51 ?1548次閱讀

    DevOps如何加速軟件開發過程

      DevOps 已成為當今技術世界任何云解決方案不可或缺的一部分。為了使云解決方案的旅程順利、高效和有效,必須遵循 DevOps 原則和實踐
    的頭像 發表于 07-01 09:25 ?781次閱讀

    軟通動力DevOps團隊榮獲“2022年互聯網行業DevOps領域明星團隊”

    作為DevOps 規范任務組成員單位,軟通動力具備成熟的DevOps端到端建設能力。迄今為止,軟通動力已成功協助多個客戶實現了 DevOps 相關工程實踐落地,并圍繞這一過程研發了相關
    的頭像 發表于 11-15 15:27 ?655次閱讀

    DevOps自動化的核心

    DevOps全自動化運維平臺,用于從代碼到生產對可信軟件版本進行分發。參與的DevOps項目具有用戶、資源和權限,可加快部署頻率。
    的頭像 發表于 04-13 09:41 ?649次閱讀

    如何實現DevOps目標的核心技術類別和具體技術

    11 通信工具 12 知識分享工具 13 總結 本篇文章中將介紹一些能夠幫助你實現 DevOps 目標的核心技術類別和具體技術。 1 關于 DevOps 及其工具 關于 DevOps
    的頭像 發表于 06-25 15:34 ?683次閱讀

    什么是DevOps的持續測試?持續測試如何融入DevOps

    持續測試(CT) 是在整個軟件開發生命周期(SDLC) 自動測試軟件應用程序和組件的實踐。在 DevOps ,持續測試是在整個DevOps
    的頭像 發表于 01-09 09:10 ?562次閱讀
    什么是<b class='flag-5'>DevOps</b><b class='flag-5'>中</b>的持續測試?持續測試如何融入<b class='flag-5'>DevOps</b>?
    主站蜘蛛池模板: 性欧美FREE少妇XXX| 久久久国产精品免费A片蜜芽广| 91羞羞视频| 永久免费的无码中文字幕| 帅哥男男GV在线1080P| 日本精品久久久久中文字幕2 | 国产精品一区二区在线播放| jazzjazzjazz欧美| 99re久久超碰视频精品| 91夫妻交友论坛| 99久久精品国产自免费| 99re久久热最新地址一| 97人人碰免费视频公开| 99久久国产综合精品成人影院| 最近日本免费观看MV免费| 亚洲色综合狠狠综合区| 亚洲香蕉视频在线播放| 在线A亚洲老鸭窝天堂AV高清| 伊人热| 2018国产天天弄谢| ppypp午夜限制不卡影院私人| japanese幼儿videos| 国产高潮国产高潮久久久久久| 国产精品亚洲在钱视频| 黄页网站免费视频大全9| 久久久久亚洲精品影视| 美女露出逼| 少妇精油按摩| 一道本无吗d d在线播放| 99久久国产综合精品国| 国产精品久久久久久日本| 久久国产精品萌白酱免费| 奶头被客人吸得又红又肿| 四虎影视永久无码精品| 一个人在线观看的视频| 第一次处破女高清电影| 娇小老少配xxxxx| 色橹橹欧美在线观看视频高| 成人AV精品视频| 国产精品一区二区20P| 毛片免费观看的视频在线|