Еще один ответ с некоторыми советами, может быть кому-то полезен:
не забудьте разделить свои команды следующим правилом :
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 0in && gmake test && set -e && echo 0будут пропущены вместе с println run_testsоператором, потому что failed gmake testпрервет сборку jenkins. В качестве обходного пути вы можете переключиться на returnStatus:true, но тогда вы пропустите вывод своей команды.