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 -e
e com os echo 0
comandos se gmake test
falharem (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 -e
e echo 0
in && gmake test && set -e && echo 0
serão ignorados, com a println run_tests
declaração, porque falha gmake test
abortará a construção de jenkins. Como solução alternativa, você pode alternar para returnStatus:true
, mas perderá a saída do seu comando.