如何处理 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)
}
}
有点复杂,但似乎可行!
如果我有一个 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)
}
}
有点复杂,但似乎可行!