Прежде всего, вам нужно понять, что, хотя код внутри скрипта потерпел неудачу, функция оболочки, которую вызвал jenkinsfile, была успешной. Вот почему jenkinsfile не смог перехватить ошибку, так как скрипт вернул 0. Поэтому вам нужно написать код, который перехватит возвращаемое значение кода, выполняемого внутри скрипта. Нечто похожее на
result = sh (
script: "node index.js -m shell -h project -p max4 -i local",
returnStatus: true
)
if (result != 0) {
currentBuild.result = 'FAILURE'
break
}
Здесь «разрыв» очень важен, так как мы не хотим, чтобы другие этапы выполнялись после сбоя сборки.