我在Jenkinsfile中有类似以下代码:
node {
checkout scm
// do some stuff
try {
// do some maven magic
} catch (error) {
stage "Cleanup after fail"
emailext attachLog: true, body: "Build failed (see ${env.BUILD_URL}): ${error}", subject: "[JENKINS] ${env.JOB_NAME} failed", to: 'someone@example.com'
throw error
} finally {
step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
}
}
如果以上代码由于一些与Jenkins管道相关的错误在try { }
中失败(例如使用未批准的静态方法),脚本会悄无声息地失败。 当我删除try / catch / finally时,我可以看到错误。
我做错了什么吗?重新抛出error
不应该使管道错误显示在日志中吗?
编辑:
我已经找到了问题的症结所在,即groovy语法,例如:当我使用尚未分配的变量时。
例子:
echo foo
如果foo
没有在任何地方声明/分配,则Jenkins将失败构建,并且如果它位于重新抛出异常的try / catch / finally内部,则不会显示原因。