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 -e
y echo 0
comandos si gmake test
falla (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 -e
y echo 0
en && gmake test && set -e && echo 0
se omitirán, con la println run_tests
declaración, porque falló gmake test
abortará la compilación de jenkins. Como solución alternativa puede cambiar returnStatus:true
, pero perderá el resultado de su comando.