Похоже, ваш скрипт возвращается с нулевым кодом состояния. В противном случае он выдаст исключение, как описано в sh
описание шага . Проблема может заключаться в том, что состояние выхода sh sctipt.sh
является состоянием выхода последней выполненной команды , и ваш сценарий может что-то сделать после возникновения ошибки (например, echo
что-то перед выходом). Самый простой и грубый способ убедиться, что каждая ошибка возвращена, это использовать поставить set -e
вверху вашего скрипта.
Вам не нужен catch
, чтобы иметь эту функциональность (я имею в виду сбой на ошибка сценария), если вы не хотите делать дополнительные операции в случае ошибки. Но если вы это сделаете, то вы должны заключить выполнение скрипта в предложение try
:
stage("build") {
try {
sh 'sh script.sh'
}
catch (err) {
currentBuild.result = 'FAILURE'
emailExtraMsg = "Build Failure:"+ err.getMessage()
throw err
}
}