web-dev-qa-db-fra.com

try / catch / finally masque les problèmes de Jenkinsfile en cas de grandes exceptions du compilateur

J'ai un code similaire à celui ci-dessous dans mon fichier Jenkins:

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]'
       throw error
   } finally {
       step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
   }
}

Si le code ci-dessus échoue à cause d’erreurs liées à jenkins-pipeline dans le try { } (par exemple, en utilisant une méthode statique non approuvée), le script échoue en mode silencieux. Quand je supprime le try/catch/enfin je peux voir les erreurs. Est-ce que je fais quelque chose de mal? Le fait de réécrire error ne devrait-il pas faire apparaître les erreurs de pipeline dans le journal?

EDIT: J'ai réussi à cerner le problème à la syntaxe groovy, par exemple J'utilise une variable qui n'a pas encore été attribuée. Exemple: echo foo Si foo n’est déclaré/assigné nulle part, Jenkins échouera à la construction et n’en indiquera pas la raison s’il se trouve dans la zone try/catch/finally qui renverse l’exception.

23

Cela se produit lorsqu'une exception supplémentaire est renvoyée à l'intérieur du bloc finally ou avant la relance à l'intérieur de catch. Dans ces cas, le RejectedAccessException est avalé et le script-security ne l'attrape pas.

7
amuniz