我的 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: '[email protected] /cdn-cgi/l/email-protection'
throw error
} finally {
step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
}
}
如果上面的代码由于一些与 jenkins-pipeline 相关的错误而失败try { }
(例如,使用未经批准的静态方法)脚本会默默失败。当我删除 try/catch/finally 时,我可以看到错误。
难道我做错了什么?不应该重新抛出error
使管道错误出现在日志中?
编辑:
我已经设法将问题确定为常规语法,例如我使用了一个尚未分配的变量。
例子:
echo foo
If foo
未在 Jenkins 构建失败的任何地方声明/分配,并且如果它位于重新抛出异常的 try/catch/finally 内部,则不会显示原因。
当在内部抛出额外的异常时会发生这种情况finally
块内或重新扔之前catch
。在这些情况下RejectedAccessException
被吞掉并且script-security
没有抓住它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)