如何处理 Jenkins Job DSL 种子作业中的异常?

How to handle exceptions in a Jenkins Job DSL seed job?

如果我有一个 Git 存储库,里面装满了作业 DSL groovy 脚本和一个典型的种子作业,例如:

job('seed') {
    //... scm, triggers etc.
    steps {
        dsl {
            external 'jobs/**/*.groovy'
        }
    }
    //... more config etc.
}

如果只有一个作业 dsl 脚本由于某种原因抛出异常会发生什么,例如:

job('deliberate-fail') {
    throw new Exception("Arrrgggghhh")
}

是否可以在种子作业中处理此异常,或者整个种子作业会失败吗?

如果除一个以外的所有方法都有效 - 种子作业是否可以记录 UNSTABLE 结果而不是 FAILURE

我真的不想一个坏苹果破坏这群人

根据 Opal 使用 try-catch 的建议,我修改了作业以捕获异常并将错误打印到控制台。

job('deliberate-fail') {
    try {
        throw new Exception("Arrrgggghhh")
    } catch (Exception ex){
        println("deliberate-fail job is [UNSTABLE]")
    }
}

因为我目前正在使用 Job DSL plugin (and not a Jenkins Pipeline script), I don't think Opal's suggestion to use "currentBuild.result = 'UNSTABLE'" was available to me. After a little digging I found I could use the Text-Finder plugin 在控制台中搜索“[UNSTABLE]”错误并相应地更改种子作业状态。

job('seed-job') {
     steps {
        dsl {
            external '**/*_jobdsl.groovy'
        }
    }
    publishers {
        textFinder(/[UNSTABLE]/, '', true, false, true)
    }    
}

有点复杂,但似乎可行!