日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jenkins复制作业_Jenkins分层作业和作业状态汇总

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jenkins复制作业_Jenkins分层作业和作业状态汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jenkins復制作業

您可能知道,Jenkins是高度可配置的CI服務器。 我們可以設置不同的自定義構建過程。 我將分享一些我用來設置詹金斯工作層次的方法。 這是用例:

  • 我們有一個主要的入口工作被調用以啟動整個構建過程。
  • 這項工作可以有一個到多個子工作。 (第2級)
  • 每個子工作也可以有一個到多個子工作。 (第3級)
  • 主要思想是收集/匯總所有兒童職位的狀態,并將其匯總為主要職位。


  • 請參閱下面的示例屏幕快照,該示例可視化了總體思路。 這里:

    • Main_Job是單入口作業,必須包含所有同級作業狀態
    • Job_Set_1Job_Set_2是兩個子作業
    • Build_ [1-4]Job_Set_1的子作業
    • Tests_ [1-3]Job_Set_2的子作業

    現在,我們應該使用一些Jenkins插件來構建這樣的層次結構。 我一直在使用Multijob Plugin 。 請參閱以下配置的屏幕截圖:

    Main_Job /配置

    Job_Set_1 /配置

    Job_Set_2 / configure

    但是,這還不夠。 我們必須將所有兄弟作業的狀態匯總到Main_Job中 。 我一直在使用修補的Groovy Postbuild插件 。 修改后的插件位于https://github.com/halyph/groovy-postbuild-plugin Groovy Postbuild插件允許我們為作業的Post-build Actions編寫Groovy腳本。 該腳本可以訪問整個Jenkins環境,并且可以使用所有已安裝的Jenkins插件的功能:

    這是此腳本的來源:

    import hudson.model.* import com.tikal.jenkins.plugins.multijob.*;void log(msg) {manager.listener.logger.println(msg) }threshold = Result.SUCCESSvoid aggregate_results() {failed = falsemainJob = manager.build.getProject().getName()job = hudson.model.Hudson.instance.getItem(mainJob)log '-------------------------------------------------------------------------------------'log 'Aggregated status report'log '-------------------------------------------------------------------------------------'log('${mainJob} #${manager.build.getNumber()} - ${manager.build.getResult()}')job.getLastBuild().getSubBuilds().each { subBuild->subJob = subBuild.getJobName() subJobNumber = subBuild.getBuildNumber()job = hudson.model.Hudson.instance.getItem(subBuild.getJobName())log '${subJob} #${subJobNumber} - ${job.getLastCompletedBuild().getResult()}'log job.getLastCompletedBuild().getLog()//println subBuilddePhaseJob = hudson.model.Hudson.instance.getItem(subBuild.getJobName())dePhaseJobBuild = dePhaseJob.getBuildByNumber(subBuild.getBuildNumber())dePhaseJobBuild.getSubBuilds().each { childSubBuild ->try {log ' ${childSubBuild.jobName}'job = hudson.model.Hudson.instance.getItem(childSubBuild.getJobName())build = job.getBuildByNumber(childSubBuild.getBuildNumber())indent = ' ' log '${indent} #${build.getNumber()} - ${build.getResult()}' log build.getLog()if(!failed && build.getResult().isWorseThan(threshold) ) {failed = true}} catch (Exception e) { log('ERROR: ${e.getMessage()}')failed = true}}}if(failed) {manager.build.setResult(hudson.model.Result.FAILURE)} }try {aggregate_results() } catch(Exception e) {log('ERROR: ${e.message}')log('ERROR: Failed Status report aggregation')manager.build.setResult(hudson.model.Result.FAILURE) }

    您也可以在GitHub Gist上找到它: https : //gist.github.com/4610274 。

    這個腳本很傻。 它只是為每個子作業提取(在Main_Job控制臺中打印)下一個信息:

    • 工作名稱
    • 建立數字
    • 生成結果(狀態)
    • 建立日志

    此外,它還可以根據子作業的狀態來設置Main_Job狀態。 請參閱腳本中的threshold變量。 匯總報告如下所示:

    Started by user anonymous Building in workspace C:\Users\oivasiv\.jenkins\jobs\Main_Job\workspace Starting build job Job_Set_1. Finished Build : #8 of Job : Job_Set_1 with status :SUCCESS Starting build job Job_Set_2. Finished Build : #8 of Job : Job_Set_2 with status :SUCCESS ------------------------------------------------------------------------------------- Aggregated status report ------------------------------------------------------------------------------------- Main_Job #8 - SUCCESS Job_Set_1 #8 - SUCCESS Started by upstream project 'Main_Job' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Job_Set_1\workspace Starting build job Build_1. Starting build job Build_2. Finished Build : #8 of Job : Build_1 with status :FAILURE Finished Build : #8 of Job : Build_2 with status :SUCCESS Starting build job Build_3. Starting build job Build_4. Finished Build : #6 of Job : Build_3 with status :UNSTABLE Finished Build : #6 of Job : Build_4 with status :SUCCESS Notifying upstream projects of job completion Finished: SUCCESSBuild_1#8 - FAILURE Started by upstream project 'Job_Set_1' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Build_1\workspace Setting result to [Failed] Build step 'Set the build result' changed build result to FAILURE Build step 'Set the build result' marked build as failure Notifying upstream projects of job completion Finished: FAILUREBuild_2#8 - SUCCESS Started by upstream project 'Job_Set_1' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Build_2\workspace Setting result to [Success] Build step 'Set the build result' changed build result to SUCCESS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> null Notifying upstream projects of job completion Finished: SUCCESSBuild_3#6 - UNSTABLE Started by upstream project 'Job_Set_1' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Build_3\workspace Setting result to [Unstable] Build step 'Set the build result' changed build result to UNSTABLE Notifying upstream projects of job completion Finished: UNSTABLEBuild_4#6 - SUCCESS Started by upstream project 'Job_Set_1' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Build_4\workspace Setting result to [Success] Build step 'Set the build result' changed build result to SUCCESS Notifying upstream projects of job completion Finished: SUCCESSJob_Set_2 #8 - SUCCESS Started by upstream project 'Main_Job' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Job_Set_2\workspace Starting build job Test_1. Finished Build : #8 of Job : Test_1 with status :SUCCESS Starting build job Test_2. Finished Build : #8 of Job : Test_2 with status :UNSTABLE Starting build job Test_3. Finished Build : #8 of Job : Test_3 with status :SUCCESS Notifying upstream projects of job completion Finished: SUCCESSTest_1#8 - SUCCESS Started by upstream project 'Job_Set_2' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Test_1\workspace Setting result to [Success] Build step 'Set the build result' changed build result to SUCCESS Notifying upstream projects of job completion Finished: SUCCESSTest_2#8 - UNSTABLE Started by upstream project 'Job_Set_2' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Test_2\workspace Setting result to [Unstable] Build step 'Set the build result' changed build result to UNSTABLE Notifying upstream projects of job completion Finished: UNSTABLETest_3#8 - SUCCESS Started by upstream project 'Job_Set_2' build number 8 Building in workspace C:\Users\oivasiv\.jenkins\jobs\Test_3\workspace Setting result to [Success] Build step 'Set the build result' changed build result to SUCCESS Notifying upstream projects of job completion Finished: SUCCESSBuild step 'Groovy Postbuild' changed build result to FAILURE Build step 'Groovy Postbuild' marked build as failure Notifying upstream projects of job completion Finished: FAILURE

    因此,此類作業狀態聚合和Groovy后處理有什么好處:

    • 我們在一個地方擁有工作狀態
    • Main_Job發送的電子郵件通知包含此狀態
    • 實現任何自定義后處理邏輯的能力
    • 可以通過Groovy Scrip重用其他插件功能

    參考:來自JCG合作伙伴 Orest Ivasiv的Jenkins分層作業和作業狀態匯總 ,位于Knowledge Is Everything博客上。

    翻譯自: https://www.javacodegeeks.com/2013/02/jenkins-hierarchical-jobs-and-jobs-status-aggregation.html

    jenkins復制作業

    總結

    以上是生活随笔為你收集整理的jenkins复制作业_Jenkins分层作业和作业状态汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。