Еще один ответ с некоторыми советами, может быть кому-то полезен:
не забудьте разделить свои команды следующим правилом :
command1 && command2 - означает, что command2 будет выполнена, только если command1 успешно
command1 ; command2 - означает, что команда 2 будет выполнена несмотря на результат command1
например:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test ;set -e;echo 0 ", returnStdout: true).trim()
println run_tests
будет успешно выполнена с set -e
и echo 0
команды , если gmake test
не удалось (тесты не удалось), а следующий код отрезала:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test && set -e && echo 0 ", returnStdout: true).trim()
println run_tests
немного неверно, и команды set -e
и echo 0
in && gmake test && set -e && echo 0
будут пропущены вместе с println run_tests
оператором, потому что failed gmake test
прервет сборку jenkins. В качестве обходного пути вы можете переключиться на returnStatus:true
, но тогда вы пропустите вывод своей команды.