jenkins管道捕获build_job信息以获取失败的并行构建 [英] jenkins pipeline catch build_job info for a failed parallel build

查看:1184
本文介绍了jenkins管道捕获build_job信息以获取失败的并行构建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道如何在并行管道执行中捕获失败作业的编号,同时仍然具有failFast功能以在发生作业失败时使构建短路吗?我知道,如果在运行构建步骤时执行"propagate = false",我可以使其工作,但这会杀死failFast功能,我需要它.

Does anyone know how to catch the failed job's number in a parallel pipeline execution while still have failFast feature working for short-circuiting of builds in the event of a job failure? I know i can kind-of make it work if i do "propagate = false" while running the build step but that kills the failFast feature, and i need that.

例如,下面是我的代码,我也想在catch块中使用变量achild_job_info的值.

For example, below is my code and i want the value of variable achild_job_info inside the catch block as well.

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

推荐答案

我目前唯一能找到的方法是使用'exception string'的值并将其拆分以获取当前的内部版本号和名称.我不确定这是执行此操作的最可靠方法,但目前仍然有效.发布此回复以帮助他人.

The only way i could find out for now is to use the value of the 'exception string' and split it to get the current build number and name. I am not sure that is the most robust way to do this but works for now. Posting this reply to help others.

这篇关于jenkins管道捕获build_job信息以获取失败的并行构建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆