首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jenkins管道为失败的并行构建捕获build_job信息

jenkins管道为失败的并行构建捕获build_job信息
EN

Stack Overflow用户
提问于 2017-04-29 05:31:21
回答 2查看 2.7K关注 0票数 3

有没有人知道如何在并行流水线执行中捕获失败作业的编号,同时仍然使用failFast功能在作业失败的情况下短路构建?我知道,如果我在运行构建步骤时执行"propagate = false“,我可以让它工作,但这会杀死failFast功能,我需要这样做。

例如,下面是我的代码,我还想要catch块中变量achild_job_info的值。

代码语言:javascript
复制
build_jobs = [“Build_A”, “ Build_B”, “ Build_C”]

def build_job_to_number_mappings = [:]
// in this hashmap we'll place the jobs that we wish to run
def branches = [:] 
def achild_job_info = ""
def abuild_number = ""
for (x in build_jobs) {
    def abuild = x 
    branches[abuild] = { 
        stage(abuild){
            retry(2) {
                try {
                    achild_job_info = build job: abuild
                    echo “ achild_job_info”  // —>  this gives: org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper@232601dc
                    abuild_number = achild_job_info.getId()
                    build_job_to_number_mappings[abuild] = achild_job_info.getNumber()
                } catch (err) {
                    echo “ achild_job_info: ${achild_job_info } “  // —> This comes empty. I want the runwrapper here as well, just like in the try block. 
                    abuild_job_number = abuild_job_info.getId()
                    build_job_to_number_mappings[abuild] = achild_job_info.getNumber()
                } // try-catch
        } // stage
   } // branches
} // for
branches.failFast = true
parallel branches
EN

回答 2

Stack Overflow用户

发布于 2017-05-04 07:44:47

目前我能找到的唯一方法是使用“异常字符串”的值,并将其拆分以获得当前的内部版本号和名称。我不确定这是做这件事最健壮的方式,但目前是可行的。张贴此回复是为了帮助他人。

票数 3
EN

Stack Overflow用户

发布于 2022-02-26 01:17:53

您需要通过关闭异常传播来避免抛出:

代码语言:javascript
复制
achild_job_info = build job: abuild, propagate: false
if(achild_job_info.result == "SUCCESS") { ...

另外,有点晚了,但我自己也是来找这个的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43689169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档