如果我有一个Git存储库,里面装满了Job DSL groovy脚本和一个典型的种子工作,例如:
job('seed') {
//... scm, triggers etc.
steps {
dsl {
external 'jobs/**/*.groovy'
}
}
//... more config etc.
}
如果某个作业dsl脚本由于某种原因抛出异常会发生什么,例如:
job('deliberate-fail') {
throw new Exception("Arrrgggghhh")
}
是否可以在种子作业中处理此异常,或整个种子作业是否会失败?
如果只有一个可以工作 - 种子作业是否可以记录不稳定结果而不是 FAILURE ?
我真的不希望一个坏苹果破坏一堆。
答案 0 :(得分:0)
基于Opal建议使用try-catch,我修改了作业以捕获异常并向控制台输出错误。
job('deliberate-fail') {
try {
throw new Exception("Arrrgggghhh")
} catch (Exception ex){
println("deliberate-fail job is [UNSTABLE]")
}
}
由于我目前正在使用Job DSL plugin(而不是Jenkins Pipeline脚本),我不认为Opal建议使用" currentBuild.result =& #39; UNSTABLE' "我可以使用。经过一番挖掘后,我发现我可以使用Text-Finder plugin在控制台中搜索" [不稳定] "错误并相应地更改种子作业状态。
job('seed-job') {
steps {
dsl {
external '**/*_jobdsl.groovy'
}
}
publishers {
textFinder(/[UNSTABLE]/, '', true, false, true)
}
}
有点令人费解,但似乎有效!