groovy - example - jenkins pipeline wiki
try/catch/finally enmascara los problemas de Jenkinsfile en caso de que existan excepcionales excepciones en el compilador (1)
Tengo un código similar al de abajo en mi archivo 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 el código anterior falla debido a algunos errores relacionados con jenkins-pipeline en el try { }
(por ejemplo, utilizando un método estático no aprobado), la secuencia de comandos falla silenciosamente. Cuando elimino el try / catch / finalmente puedo ver los errores. ¿Estoy haciendo algo mal? ¿No debería el error
reenvío hacer que aparezcan los errores de la tubería en el registro?
EDITAR: Me las arreglé para resolver el problema con la sintaxis del groovy, cuando, por ejemplo, uso una variable que aún no ha sido asignada. Ejemplo: echo foo
Si foo
no se declara / asigna en ningún lugar, Jenkins fallará en la compilación y no mostrará la razón si está dentro de try / catch / finally, que vuelve a anular la excepción.
Esto sucede cuando se lanza una excepción adicional dentro del bloque final o antes de volver a lanzar la catch
interna. En estos casos, la RejectedAccessException
se traga y el script-security
no lo detecta.