Я начал со стадии в рабочем процессе следующим образом:
try{
stage('Example_1'){
bat "${PYTHON} script_1.py"
}
}
catch(e){
build_ok = false
}
try{
stage('Example_2'){
if(build_ok){
bat "${PYTHON} script_2.py"
}
}
}
catch(e){
build_ok = false
}
stage('Cleanup'){
bat "${PYTHON} script_1.py"
}
Если сценарий вызывает исключение, этот этап будет помечен как неудачный (красный в графическом интерфейсе), но из-за catch
конвейер продолжит работу.(Это необходимо из-за более поздней стадии очистки. Другие шаги не будут выполняться, потому что они защищены if(build_ok)
).Это работает хорошо.
Однако теперь мне нужен код выхода из скрипта Python.Это может быть сделано с помощью:
stage('Example_1'){
exitcode = bat script: "${PYTHON} script_1.py", returnStatus: true
}
Этот документ работает следующим образом:
returnStatus: Обычно скрипт, который завершается с ненулевым кодом состояния, вызываетшаг, чтобы потерпеть неудачу с исключением.Если этот флажок установлен, возвращаемое значение шага будет вместо кода состояния.Затем вы можете сравнить его с нулем, например.
Я знаю, как пометить всю сборку как неудачную (currentBuild.result = 'FAILURE'
), но мне также нужен этап, чтобы быть неудачным.
Так как же пометить сцену как неудачную, если возвращенный код выхода указывает, что произошел сбой?(Не все ненулевые коды выхода означают сбой.)