chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

對(duì)iPipeline的接口進(jìn)行優(yōu)化和實(shí)踐

8nfr_ZTEdevelop ? 來(lái)源:未知 ? 作者:易水寒 ? 2018-04-05 18:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群




概述

XXX項(xiàng)目原CI系統(tǒng)由項(xiàng)目自行搭建,使用Jenkins傳統(tǒng)的Job方式來(lái)實(shí)現(xiàn)VerifyCI和MergeCI以及DailyBuild。隨著項(xiàng)目規(guī)模越來(lái)越大,分支越來(lái)越多,合代碼的頻率也逐漸增大的情況下,現(xiàn)有系統(tǒng)呈現(xiàn)出諸多不便之處。為解決這些問(wèn)題,項(xiàng)目嘗試引入一系列現(xiàn)成公司級(jí)Devops研發(fā)工具并結(jié)合Jenkins2.0的Pipeline新特性來(lái)改造本項(xiàng)目Pipeline流程。

Pipeline as Code 是 Jenkins 2.0 版本的精華所在,是幫助 Jenkins 實(shí)現(xiàn)從 CI 到 CD 華麗轉(zhuǎn)身的關(guān)鍵工具。所謂 Pipeline,簡(jiǎn)單來(lái)說(shuō),就是一套運(yùn)行于 Jenkins 上的工作流框架,將原本獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來(lái),實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜發(fā)布流程。落實(shí)到代碼級(jí)別,即我們只需要把精力集中在編寫 Jenkinsfile 文件上,然后將其隨同代碼庫(kù)一起托管,Jenkins可以根據(jù)Jenkinsfile來(lái)迅速拉起項(xiàng)目的CI流程,方便高效。

但是隨著多個(gè)項(xiàng)目的試行、落地,發(fā)現(xiàn)基于Jenkins2.0的Pipeline功能強(qiáng)大,但是具體應(yīng)用到各個(gè)項(xiàng)目還有如下幾個(gè)痛點(diǎn):

各個(gè)項(xiàng)目都在編寫自己特色的Jenkinsfile,很多時(shí)候互相復(fù)制修改一下代碼實(shí)現(xiàn),Jenkinsfile冗余度非常高;

按照J(rèn)enkins1.x時(shí)代的思路,訂制化自己的CI/CD流程、郵件通知、報(bào)告輸出,轉(zhuǎn)換過(guò)程緩慢而痛苦;

遇到技術(shù)問(wèn)題沒(méi)有能力解決、采用一些過(guò)時(shí)的方法和工具,而其他項(xiàng)目組已經(jīng)解決一些技術(shù)問(wèn)題或者采用了更加先進(jìn)的方法和工具,互相并不能及時(shí)分享;

為了解決這些問(wèn)題,經(jīng)過(guò)項(xiàng)目反復(fù)調(diào)研和摸底,最終采用了中開社上開源的Jenkins2.0的Pipeline共創(chuàng)庫(kù)iPipeline(又稱plll庫(kù))來(lái)輔助本項(xiàng)目重構(gòu)CI流程。

iPipeline是簡(jiǎn)化CI Pipeline部署的工具集,是面向開發(fā)人員和CI配置管理員的函數(shù)庫(kù),其封裝了Jenkins 2.0的常用函數(shù),集成了Gerrit、制品庫(kù)、云CI、度量、告警采集、郵件通知,另外提供docker封裝的工具集(復(fù)雜度、Klocwork、度量分析、度量導(dǎo)入等)。利用其可以幫助我們節(jié)省很多精力,避免重復(fù)造輪子,因此非常滿足我們項(xiàng)目的需求。

問(wèn)題描述

iPipeline框架在本項(xiàng)目的實(shí)踐過(guò)程中確實(shí)提高了很多效率和幸福感,但結(jié)合本項(xiàng)目一些實(shí)際的使用情況,發(fā)現(xiàn)其仍然存在一些優(yōu)化和改進(jìn)的點(diǎn)。為此針對(duì)我們項(xiàng)目的需要,我們對(duì)iPipeline做了如下一些優(yōu)化并實(shí)踐。

問(wèn)題1

利用plll庫(kù)提供的pdocker接口,可以很方便地在指定的節(jié)點(diǎn)上運(yùn)行指定的Docker容器來(lái)完成相關(guān)CI任務(wù)。比如本項(xiàng)目圈復(fù)雜度檢查已經(jīng)Docker化,因此可以利用pdocker接口,通過(guò)配置上鏡像名、映射目錄以及需要運(yùn)行的指令與腳本來(lái)執(zhí)行代碼的圈復(fù)雜度檢查。

但是實(shí)際在對(duì)pdocker接口的使用過(guò)程中發(fā)現(xiàn),plll庫(kù)每次都會(huì)去節(jié)點(diǎn)上pull鏡像,然后再運(yùn)行,這對(duì)于鏡像其實(shí)已經(jīng)存在于本地節(jié)點(diǎn)的情況其實(shí)并沒(méi)有必要,因此需要改造。

問(wèn)題2

目前plll庫(kù)提供的Update接口僅支持Gerrit代碼倉(cāng)庫(kù)的代碼檢出更新,但本項(xiàng)目運(yùn)行某些用例測(cè)試需要的報(bào)文存儲(chǔ)于SVN庫(kù)上,因此有必要擴(kuò)充plll庫(kù)原有接口,使其支持SVN庫(kù)的代碼更新

帶著這兩個(gè)問(wèn)題,我們對(duì)plll庫(kù)做出了對(duì)應(yīng)的一些優(yōu)化并且實(shí)踐之。

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

優(yōu)化1:pdocker接口是否需要拉取鏡像由用戶自定義

改造pdocker接口,添加參數(shù)來(lái)控制是否需要pull鏡像,接口代碼片段如下:

/**

* 工具名稱:docker執(zhí)行

* 工具描述:

* image - 鏡像的全路徑

* needPull - 是否需要pull鏡像

* before_cmd - 以root執(zhí)行的命令行,在執(zhí)行user_cmd前執(zhí)行

* volumes - 路徑映射清單,"a:b,c:d"

* params - 執(zhí)行參數(shù)

* profile - 環(huán)境文件,可執(zhí)行

* user_cmd - 以當(dāng)前用戶執(zhí)行的命令行(需要鏡像支持adduser命令)

* after_cmd - 以root執(zhí)行的命令行,在執(zhí)行user_cmd后執(zhí)行

* local_dir - 存放臨時(shí)文件的目錄(要求有權(quán)限映射到容器內(nèi))

* shared_dir - 存放代碼和產(chǎn)出文件的目錄(要求有權(quán)限映射到容器內(nèi))

* sh_exec - shell進(jìn)程,默認(rèn)為sh

**/

def call(image, needPull, before_cmd, volumes='',params='', profile='', user_cmd='', after_cmd='',

local_dir=env.LOCAL, shared_dir=env.SHARED, sh_exec='sh'){

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

if( needPull =="no"){

echo "no need to pull image !!! The image exists in local!"

writeFile file:docker_entry_file, text:"""

set -e

docker run --rm ${params} ${volumes} ${image} ${sh_exec} -x -c ${docker_run_file}

"""

}elseif( needPull =="yes"){

writeFile file:docker_entry_file, text:"""

set -e

docker pull ${image}

docker run --rm ${params} ${volumes} ${image} ${sh_exec} -x -c ${docker_run_file}

"""

}

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

}

由代碼可以看出,通過(guò)添加needPull參數(shù),即可由用戶自定義是否需要pull鏡像。

使用舉例:

例如本項(xiàng)目調(diào)用pdocker接口利用自制docker鏡像完成代碼圈復(fù)雜度檢查:

pnode("${env.NODE_NAME}"){

plll.Check("CCN_DOCKER","CCN_DOCKER",[

run_execute:{ pdocker (

/* image */"docker.zte.com.cn:5000/10010891/lizard:v1",

/* need pull */"no",

/* cmd */"cd /home/code/ && chmod -R 777 * && cd script/VerifyCI/CCNCheck/ && sh +x lizard.sh",

/* volumes */"-v ${env.SHARESPACE}/${env.XXXXX_DIR}:/home",

/* params */"--privileged",

)

},

param:[

report_file:[]

]

]);

}

由于docker.zte.com.cn:5000/10010891/lizard:v1已經(jīng)存在于我們的外掛節(jié)點(diǎn)上,因此此處needPull參數(shù)置為no即可控制pdocker內(nèi)部無(wú)需再去pull鏡像。

優(yōu)化2:擴(kuò)充框架Update接口,使其支持SVN代碼更新

優(yōu)化Plll庫(kù)代碼,加入U(xiǎn)pdateSVN接口來(lái)支持SVN庫(kù)的代碼檢出與更新

/**

* 功能名稱:Update

* 功能描述:通過(guò)SVN更新代碼

**/

defUpdateSVN(name, desc, args){

LogDebug("[DEBUG] Update: ${name}, ${desc}")

args.run_execute ={

dir("${args.scm.path}"){

svn_checkout( args.scm.keyid, args.scm.repo, args.scm.path )

}

}

/* 調(diào)用功能適配 */

FunctionAdapter("Update","update", name, desc, args){}

return

}

/**

* 工具名稱:svn_checkout

* 工具描述:svn更新代碼

* 參數(shù)描述:

* - keyid: SVN庫(kù)的Credentials ID

* - repo: SVN庫(kù)Repo路徑

* - path: 代碼下載路徑

**/

def svn_checkout(keyid, repo, path){

checkout([

$class:'SubversionSCM',

additionalCredentials:[],

excludedCommitMessages:'',

excludedRegions:'',

excludedRevprop:'',

excludedUsers:'',

filterChangelog:false,

ignoreDirPropChanges:false,

includedRegions:'',

locations:[

[credentialsId:"${keyid}", depthOption:'infinity', ignoreExternalsOption:true,local:".", remote:"${repo}"]

],

workspaceUpdater:[$class:'UpdateUpdater']

])

return

}

使用舉例:

用戶只需要配置上:

SVN庫(kù)的Credentials ID

SVN庫(kù)Repo路徑

代碼下載路徑

即可完成SVN代碼檢出和更新,示例如下:

// 先配置好SVN相關(guān)參數(shù)

env.SVN_KEY_ID ="89a6fe98-8f0c-4fe6-829e-6d1cbda188e1"

env.CASE_DIR ="/jenkins_ci/CASE_TEST/PATH"

env.CASE_SVN_URL ="svn://XXX.XX.XXX.XXX/XXXXXXX/case/XXXX"

// 調(diào)用UpdateSVN接口完成SVN庫(kù)代碼更新

plll.UpdateSVN('SVN_UP','更新SVN上報(bào)文',[

scm:[keyid:"${env.SVN_KEY_ID}", repo:"${env.CASE_SVN_URL}", path:"env.CASE_DIR"],

run_dir:"${->OUTPUT_PATH}"

])

推廣建議

本文章相關(guān)優(yōu)化改進(jìn)可推廣至需要利用docker鏡像完成相關(guān)CI任務(wù)和代碼管控涉及SVN庫(kù)的項(xiàng)目

聲明:本文內(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)注

    33

    文章

    9269

    瀏覽量

    155451
  • Pipeline
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9850

原文標(biāo)題:干貨 | 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)推薦

    優(yōu)化高速接口的時(shí)序裕量

    本文將對(duì)源同步定時(shí)如何優(yōu)化高速接口時(shí)序裕量進(jìn)行討論。時(shí)序預(yù)算是對(duì)系統(tǒng)正常工作所需時(shí)序參數(shù)或時(shí)序要求的計(jì)算。
    發(fā)表于 03-20 10:46 ?4400次閱讀
    <b class='flag-5'>優(yōu)化</b>高速<b class='flag-5'>接口</b>的時(shí)序裕量

    VirtualLab Fusion應(yīng)用:使用optiSLang進(jìn)行光柵優(yōu)化

    Fusion中提供了來(lái)自Dynardo的optiSLang軟件接口,因此使優(yōu)化過(guò)程可以應(yīng)用不同的高級(jí)優(yōu)化算法。 2.VirtualLab Fusion 和optiSLang的界面 兩種軟件平臺(tái)的結(jié)合
    發(fā)表于 03-18 08:51

    LabVIEW 助力優(yōu)化軟件開發(fā)實(shí)踐和源代碼控制

    的軟件開發(fā)實(shí)踐和程序源代碼控制管理?! ≡创a控制管理  源代碼控制管理是軟件工程最基本的環(huán)節(jié)之一(因?yàn)樗鼪Q定了如何對(duì)一個(gè)應(yīng)用程序的依賴關(guān)系進(jìn)行存儲(chǔ)、組織管理以及在開發(fā)者之間共享,甚至?xí)苯佑绊懗绦?/div>
    發(fā)表于 09-13 09:30

    CoolRunner-II CPLD入門套件上的USB接口可以進(jìn)行優(yōu)化嗎?

    親愛(ài)的朋友們,作為一個(gè)業(yè)余愛(ài)好者,我想問(wèn)一個(gè)關(guān)于通過(guò)板載USB端口連接我的CoolRunner-II CPLD入門套件的問(wèn)題。是否可以使用板載USB設(shè)備對(duì)CPLD進(jìn)行編程,然后將其作為已實(shí)現(xiàn)應(yīng)用程序的通信接口進(jìn)行
    發(fā)表于 08-20 10:48

    高原環(huán)境下TD-SCDMA網(wǎng)絡(luò)的優(yōu)化實(shí)踐,不看肯定后悔

    高原環(huán)境下TD-SCDMA網(wǎng)絡(luò)的優(yōu)化實(shí)踐,不看肯定后悔
    發(fā)表于 05-28 06:57

    虛幻引擎的紋理最佳實(shí)踐

    紋理是游戲不可或缺的一部分。 這是一個(gè)藝術(shù)家可以直接控制的領(lǐng)域,以提高游戲的性能。 本最佳實(shí)踐指南介紹了幾種紋理優(yōu)化,這些優(yōu)化可以幫助您的游戲運(yùn)行得更流暢、看起來(lái)更好。 最佳實(shí)踐系列指
    發(fā)表于 08-28 06:39

    政府外網(wǎng)優(yōu)化設(shè)計(jì)實(shí)踐

    政府外網(wǎng)優(yōu)化設(shè)計(jì)實(shí)踐 摘  要:本文詳細(xì)分析了政府外網(wǎng)應(yīng)用特點(diǎn),結(jié)合當(dāng)前先進(jìn)的網(wǎng)絡(luò)技術(shù)和設(shè)備功能及其在管理工作中應(yīng)用,描述了適用于政府各級(jí)部
    發(fā)表于 05-23 15:44 ?5次下載

    MySql5.6性能優(yōu)化最佳實(shí)踐

    MySql5.6性能優(yōu)化最佳實(shí)踐
    發(fā)表于 09-08 08:47 ?13次下載
    MySql5.6性能<b class='flag-5'>優(yōu)化</b>最佳<b class='flag-5'>實(shí)踐</b>

    對(duì)iPipeline的對(duì)plll庫(kù)做出了對(duì)應(yīng)的優(yōu)化實(shí)踐之。

    項(xiàng)目CI系統(tǒng)引入了Jenkins2.0 iPipeline 框架(plll庫(kù))之后應(yīng)該說(shuō)提升了很多幸福感,其中一個(gè)很重要的方面來(lái)源于框架已經(jīng)為用戶提供了報(bào)告和郵件的基本格式,顯示直觀且高效。
    的頭像 發(fā)表于 04-05 18:23 ?5331次閱讀
    對(duì)<b class='flag-5'>iPipeline</b>的對(duì)plll庫(kù)做出了對(duì)應(yīng)的<b class='flag-5'>優(yōu)化</b>并<b class='flag-5'>實(shí)踐</b>之。

    18種接口優(yōu)化方案匯總1

    之前工作中,遇到一個(gè)`504`超時(shí)問(wèn)題。原因是因?yàn)?b class='flag-5'>接口耗時(shí)過(guò)長(zhǎng),超過(guò)`nginx`配置的`10`秒。然后 真槍實(shí)彈搞了一次接口性能優(yōu)化,最后接口從`11.3s`降為`170ms`。本文
    的頭像 發(fā)表于 02-15 15:59 ?1174次閱讀
    18種<b class='flag-5'>接口</b><b class='flag-5'>優(yōu)化</b>方案匯總1

    18種接口優(yōu)化方案匯總2

    之前工作中,遇到一個(gè)`504`超時(shí)問(wèn)題。原因是因?yàn)?b class='flag-5'>接口耗時(shí)過(guò)長(zhǎng),超過(guò)`nginx`配置的`10`秒。然后 真槍實(shí)彈搞了一次接口性能優(yōu)化,最后接口從`11.3s`降為`170ms`。本文
    的頭像 發(fā)表于 02-15 15:59 ?1030次閱讀
    18種<b class='flag-5'>接口</b><b class='flag-5'>優(yōu)化</b>方案匯總2

    接口優(yōu)化的常見(jiàn)方案實(shí)戰(zhàn)總結(jié)

    針對(duì)老項(xiàng)目,去年做了許多降本增效的事情,其中發(fā)現(xiàn)最多的就是接口耗時(shí)過(guò)長(zhǎng)的問(wèn)題,就集中搞了一次接口性能優(yōu)化。本文將給小伙伴們分享一下接口優(yōu)化
    的頭像 發(fā)表于 03-06 09:22 ?928次閱讀

    介紹得物App在資源優(yōu)化上做的一些實(shí)踐

    包體積優(yōu)化中,資源優(yōu)化一般都是首要且容易有成效的優(yōu)化方向。資源優(yōu)化是通過(guò)優(yōu)化APK中的資源項(xiàng)來(lái)優(yōu)化
    的頭像 發(fā)表于 07-24 09:00 ?1307次閱讀
    介紹得物App在資源<b class='flag-5'>優(yōu)化</b>上做的一些<b class='flag-5'>實(shí)踐</b>

    EMC電機(jī)控制器測(cè)試整改:從問(wèn)題識(shí)別到優(yōu)化實(shí)踐

    深圳南柯電子|EMC電機(jī)控制器測(cè)試整改:從問(wèn)題識(shí)別到優(yōu)化實(shí)踐
    的頭像 發(fā)表于 03-20 09:34 ?621次閱讀
    EMC電機(jī)控制器測(cè)試整改:從問(wèn)題識(shí)別到<b class='flag-5'>優(yōu)化</b><b class='flag-5'>實(shí)踐</b>

    CI/CD實(shí)踐中的運(yùn)維優(yōu)化技巧

    在數(shù)字化轉(zhuǎn)型的浪潮中,CI/CD已經(jīng)成為現(xiàn)代軟件開發(fā)的基石。然而,真正能夠發(fā)揮CI/CD威力的,往往在于那些不為人知的運(yùn)維優(yōu)化細(xì)節(jié)。本文將深入剖析CI/CD實(shí)踐中的關(guān)鍵優(yōu)化技巧,幫助您構(gòu)建更高效、更穩(wěn)定的持續(xù)集成與部署體系。
    的頭像 發(fā)表于 09-18 15:05 ?397次閱讀