try/catch/finally masks Jenkinsfile problems in ca

2019-03-23 01:43发布

I have code similar to the one below in my 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'
   }
}

If the above code fails because of some jenkins-pipeline related errors in the try { } (e.g. using unapproved static method) the script fails silently. When I remove the try/catch/finally I can see the errors. Am I doing something wrong? Shouldn't rethrowing error make the pipeline errors appear in the log?

EDIT: I've managed to nail down the problem to groovy syntax, when e.g. I use a variable that hasn't been assigned yet. Example: echo foo If foo is not declared/assigned anywhere Jenkins will fail the build and won't show the reason if it is inside the try/catch/finally which rethrows the exception.

1条回答
兄弟一词,经得起流年.
2楼-- · 2019-03-23 02:04

This happens when an additional exception is thrown inside the finally block or before the re-throw inside catch. In these cases the RejectedAccessException is swallowed and script-security does not catch it.

查看更多
登录 后发表回答