我的 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-pipeline 相关的错误try { }
(例如使用未经批准的静态方法)而失败,则脚本会静默失败。当我删除 try/catch/finally 时,我可以看到错误。难道我做错了什么?不应该重新抛出error
使管道错误出现在日志中吗?
编辑:当我使用尚未分配的变量时,我已经设法将问题归结为 groovy 语法。示例:
echo foo
如果foo
没有在任何地方声明/分配,Jenkins 将失败构建,并且如果它在重新抛出异常的 try/catch/finally 内,则不会显示原因。