Otra respuesta con algunos consejos, puede ser útil para alguien:
recuerde separar sus comandos con la siguiente regla :
command1 && command2: significa que ese comando2 se ejecutará, solo si el comando1 es correcto
comando1 ; comando2: significa que el comando 2 se ejecutará a pesar del resultado del comando1
por ejemplo:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test ;set -e;echo 0 ", returnStdout: true).trim()
println run_tests
se ejecutará con éxito con set -ey echo 0comandos si gmake testfalla (sus pruebas fallaron), mientras que el siguiente código recortado:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test && set -e && echo 0 ", returnStdout: true).trim()
println run_tests
un poco mal y los comandos set -ey echo 0en && gmake test && set -e && echo 0se omitirán, con la println run_testsdeclaración, porque falló gmake testabortará la compilación de jenkins. Como solución alternativa puede cambiar returnStatus:true, pero perderá el resultado de su comando.