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.
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.