99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

DevOps案例旨在幫助用戶在實(shí)踐中更好的運(yùn)用DevOps

8nfr_ZTEdevelop ? 來(lái)源:未知 ? 作者:李倩 ? 2018-04-11 09:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DevOps案例旨在幫助用戶在實(shí)踐中更好的運(yùn)用DevOps。

問(wèn)題描述

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

結(jié)合上圖我們可以發(fā)現(xiàn),這里有個(gè)問(wèn)題是: 一旦代碼走查通過(guò)(+2分),然后Core成員通過(guò)(Submit)后,代碼立即入庫(kù),然后觸發(fā)MergeCI流程,此時(shí)若MergeCI運(yùn)行出錯(cuò),那錯(cuò)誤此時(shí)已經(jīng)入庫(kù)并且影響后續(xù)開發(fā)人員合入代碼。

再結(jié)合本項(xiàng)目協(xié)議開發(fā)自身的實(shí)際特點(diǎn),很有可能VerifyCI通過(guò)后的MergeCI會(huì)和他人產(chǎn)生互相影響,這樣便可能導(dǎo)致主干分支代碼有錯(cuò),開發(fā)人員之間互相影響,最終影響代碼提交合入的效率。

基于此種情況,我們提出的一種模式是,MergeCI由代碼審查人員在Gerrit上打出+2分來(lái)觸發(fā),只有到MergeCI運(yùn)行通過(guò),代碼才會(huì)被推入庫(kù)中,此種方式帶來(lái)的一個(gè)最直接的好處就是主干分支上的代碼永遠(yuǎn)正確的,而且不會(huì)因?yàn)镸ergeCI報(bào)錯(cuò)而影響他人合代碼,而且該方法帶來(lái)的另外一個(gè)好處便是無(wú)需設(shè)定關(guān)鍵角色來(lái)負(fù)責(zé)Submit代碼入庫(kù),僅僅需要的是代碼走查人員即可,這樣也提高了自動(dòng)化程度,節(jié)省人力。將該流程可以示意如下圖:

因此plll庫(kù)的這種MergeCI的設(shè)置方式并不滿足本項(xiàng)目,因此我們決定擴(kuò)充plll庫(kù)對(duì)于MergeCI運(yùn)行模式的支持。

優(yōu)化實(shí)踐

通過(guò)重載了plll庫(kù)的屬性設(shè)置函數(shù),加入了根據(jù)CI類型來(lái)完成MergeCI不同觸發(fā)條件的設(shè)置:

/**

* 工具名稱:set_default_properties

* 工具描述:設(shè)置默認(rèn)的參數(shù)

* 參數(shù)說(shuō)明:

* - citype : CI類型

* - args : 參數(shù)列表

**/

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)

/* --------參數(shù)------- */

properties([

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

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

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

parameters(buildParameters),

pipelineTriggers(buildTriggers)

])

/* 清空臨時(shí)變量 */

buildParameters=null

buildTriggers=null

return

}

/**

* 函數(shù)名稱:設(shè)置gerrit屬性

**/

def set_gerrit_properties(citype, buildParameters, buildTriggers, args)

{

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

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

gerritEvents =[

patchsetCreated(

excludeDrafts:false,

excludeNoCodeChange:true,

excludeTrivialRebase:false

),

draftPublished()

]

// 如果CI類型是MergeCI,則設(shè)置器觸發(fā)條件為Code-Review +2方式來(lái)觸發(fā)

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

gerritEvents =[

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

]

}

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

}

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

使用舉例:

在MergeCI的Jenkinsfile中調(diào)用plll.set_default_properties設(shè)置項(xiàng)目屬性時(shí)明確指定mergeci類型即可,以本項(xiàng)目的Jenkinsfile代碼中設(shè)置默認(rèn)屬性參數(shù)為例:

def set_default_properties(){

plll.set_default_properties("mergeci",[

/* 關(guān)聯(lián)gerrit */

gerrit:[

server:"${env.GERRIT_SERVER_NAME}",

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

],

/* 自定義參數(shù) */

parameters:[

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

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

],

]);

}

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

優(yōu)缺點(diǎn)分析

1. 優(yōu)點(diǎn)

開發(fā)人員互相獨(dú)立,別人錯(cuò)誤的代碼無(wú)法入庫(kù),不影響他人

主干分支代碼永遠(yuǎn)正確,不影響別人拉代碼驗(yàn)證和正常合入代碼

無(wú)需小組核心成員進(jìn)行submit操作,MergeCI一旦運(yùn)行正確,代碼則自動(dòng)入庫(kù)

2. 缺點(diǎn)

原理決定了其無(wú)法并行,所以需要根據(jù)不同的項(xiàng)目情況酌情考慮。但是從本項(xiàng)目實(shí)際實(shí)踐的整局來(lái)看,本項(xiàng)目VerifyCI支持?jǐn)?shù)個(gè)任務(wù)同時(shí)并發(fā)執(zhí)行,而MergeCI排隊(duì)執(zhí)行,但由于MergeCI執(zhí)行較快,而且沖突很少,因此MergeCI的代碼都能逐個(gè)順利地合入,幸福感較以前有很大提升。

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70758
  • devops
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    12487

原文標(biāo)題:DevOps 案例 |Jenkins2.0 Pipeline框架(iPipeline)優(yōu)化實(shí)踐之路(三)

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DevOps擁抱日志管理系統(tǒng)ELK623淺析

    DevOps之擁抱日志管理系統(tǒng)ELK623
    發(fā)表于 07-15 06:06

    關(guān)于DevOps的詳解

    DevOps(Development和Operations)是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件
    發(fā)表于 09-28 17:02 ?0次下載

    DevOps工程師是干什么的

    我們之前已經(jīng)聽到很多談?wù)?b class='flag-5'>DevOps和DevOps世界的最新趨勢(shì)的事情,但是就DevOps工程師本身,到底干些什么呢?
    的頭像 發(fā)表于 09-24 16:37 ?5506次閱讀

    DevOps Foundation? 是什么?DevOps塑造著軟件世界的未來(lái)

    DevOps Foundation? 課程旨在培養(yǎng)個(gè)人對(duì) DevOps Foundation? 概念的理解以及 DevOps 如何用于提升軟件開發(fā)人員和 IT 運(yùn)維人員之間溝通、合作和
    的頭像 發(fā)表于 04-16 12:46 ?5912次閱讀

    深度解讀什么是DevOp以及DevOps的技術(shù)實(shí)現(xiàn)

    的技術(shù)實(shí)現(xiàn)方式幾個(gè)方面,結(jié)合實(shí)驗(yàn)展現(xiàn)的方式,讓讀者真正理解 DevOps 的含義。 DevOps 是什么 DevOps 的 Dev 指的 Development,Ops 指的是
    的頭像 發(fā)表于 06-21 17:46 ?4528次閱讀
    深度解讀什么是DevOp以及<b class='flag-5'>DevOps</b>的技術(shù)實(shí)現(xiàn)

    什么是DevOps?DevOps的優(yōu)勢(shì)以及生命周期

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

    云原生技術(shù)下的華為云DevOps實(shí)踐之路

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

    項(xiàng)目實(shí)施DevOps時(shí),我們是如何做測(cè)試的

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

    ks-devops基于Kubernetes的DevOps平臺(tái)

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

    DevOps的基本知識(shí)介紹

    根據(jù)Google DORA( DevOps、Research與Assessment)團(tuán)隊(duì)最新的《DevOps現(xiàn)狀》報(bào)告,在DevOps方面成效不佳的團(tuán)隊(duì)很少能夠在6個(gè)月內(nèi)將軟件投入生產(chǎn)運(yùn)營(yíng)。
    的頭像 發(fā)表于 06-01 10:51 ?1764次閱讀

    DevOps如何加速軟件開發(fā)過(guò)程

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

    軟通動(dòng)力DevOps團(tuán)隊(duì)榮獲“2022年互聯(lián)網(wǎng)行業(yè)DevOps領(lǐng)域明星團(tuán)隊(duì)”

    作為DevOps 規(guī)范任務(wù)組成員單位,軟通動(dòng)力具備成熟的DevOps端到端建設(shè)能力。迄今為止,軟通動(dòng)力已成功協(xié)助多個(gè)客戶實(shí)現(xiàn)了 DevOps 相關(guān)工程實(shí)踐落地,并圍繞這一過(guò)程研發(fā)了相關(guān)
    的頭像 發(fā)表于 11-15 15:27 ?833次閱讀

    DevOps自動(dòng)化的核心

    DevOps全自動(dòng)化運(yùn)維平臺(tái),用于從代碼到生產(chǎn)對(duì)可信軟件版本進(jìn)行分發(fā)。參與的DevOps項(xiàng)目具有用戶、資源和權(quán)限,可加快部署頻率。
    的頭像 發(fā)表于 04-13 09:41 ?834次閱讀

    如何實(shí)現(xiàn)DevOps目標(biāo)的核心技術(shù)類別和具體技術(shù)

    11 通信工具 12 知識(shí)分享工具 13 總結(jié) 本篇文章中將介紹一些能夠幫助你實(shí)現(xiàn) DevOps 目標(biāo)的核心技術(shù)類別和具體技術(shù)。 1 關(guān)于 DevOps 及其工具 關(guān)于 DevOps
    的頭像 發(fā)表于 06-25 15:34 ?925次閱讀

    什么是DevOps的持續(xù)測(cè)試?持續(xù)測(cè)試如何融入DevOps?

    持續(xù)測(cè)試(CT) 是在整個(gè)軟件開發(fā)生命周期(SDLC) 自動(dòng)測(cè)試軟件應(yīng)用程序和組件的實(shí)踐。在 DevOps ,持續(xù)測(cè)試是在整個(gè)DevOps
    的頭像 發(fā)表于 01-09 09:10 ?851次閱讀
    什么是<b class='flag-5'>DevOps</b><b class='flag-5'>中</b>的持續(xù)測(cè)試?持續(xù)測(cè)試如何融入<b class='flag-5'>DevOps</b>?