try/catch/finally masks Jenkinsfile problems in case of groovy compiler exceptions

三世轮回 提交于 2019-12-03 10:54: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:


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.



来源:https://stackoverflow.com/questions/37252572/try-catch-finally-masks-jenkinsfile-problems-in-case-of-groovy-compiler-exceptio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!