Jenkins管道,即使在失败的运行中也获得runWrapper引用

Jenkins管道,即使在失败的运行中也获得runWrapper引用,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我试图在jenkins管道中并行运行多个构建,并获得这些构建的结果。我的代码看起来像 runWrappers = [] script { def builds = [:] builds['a'] = { runWrappers += build job: 'jobA', parameters: /* params here*/ } builds['b'] = { runWrappers += build job: 'jobB', parameters: /* param

我试图在jenkins管道中并行运行多个构建,并获得这些构建的结果。我的代码看起来像

runWrappers = []

script {
    def builds = [:]
    builds['a'] = { runWrappers += build job: 'jobA', parameters: /* params here*/ }
    builds['b'] = { runWrappers += build job: 'jobB', parameters: /* params here*/ }
    builds['c'] = { runWrappers += build job: 'jobC', parameters: /* params here*/ }
    builds['d'] = { runWrappers += build job: 'jobD', parameters: /* params here*/ }

    parallel builds
    // All the builds are ran in parallel and do not exit early if one fails
    // Multiple of the builds could fail on this step
}
如果没有故障,管道将继续进入其他阶段。如果出现故障,将抛出异常,并立即运行以下生成后代码

post {
    always {
        script {
            def summary = ''
            for (int i; i < runWrappers.size(); i++) {
                def result = runWrappers[i].getResult()
                def link = runWrappers[i].getAbsoluteUrl()
                summary += "Build at: " + link + " had result of: " + result
            }
            /* Code to send summary to external location */
        }
    }
}
post{
总是{
剧本{
def摘要=“”
对于(int i;i
这在很大程度上起作用。问题是,这段代码只会打印出导致成功的生成的结果,因为失败的生成在返回对runWrapper的引用之前会引发异常


有没有一种方法可以获取对runWrapper或类似文件的引用,从而为我提供失败构建的信息(主要是url和结果)?或者,在我开始构建并导致异常之前,有没有办法获取这样的引用?

尝试使用
传播:false

build job: 'jobA', propagate: false, parameters: /* params here*/
但是在这种情况下,
并行
将不再失败