Outra resposta, com algumas dicas, pode ser útil para alguém:
lembre-se de separar seus comandos com a seguinte regra :
command1 && command2 - meios, que command2 será executado, somente se o sucesso command1
command1 ;command2 - significa que o comando 2 será executado apesar do resultado do comando1
por exemplo:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test ;set -e;echo 0 ", returnStdout: true).trim()
println run_tests
será executado com êxito set -ee com os echo 0comandos se gmake testfalharem (seus testes falharam), enquanto o seguinte código cortou:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test && set -e && echo 0 ", returnStdout: true).trim()
println run_tests
um pouco errado e comandos set -ee echo 0in && gmake test && set -e && echo 0serão ignorados, com a println run_testsdeclaração, porque falha gmake testabortará a construção de jenkins. Como solução alternativa, você pode alternar para returnStatus:true, mas perderá a saída do seu comando.