Jenkins Pipeline все еще выполняет следующие этапы, хотя текущий этап не удался - PullRequest
2 голосов
/ 27 мая 2019

Я внедряю блок try catch на большинстве моих этапов внутри моего jenkins pipeline, чтобы пропустить все последующие этапы, когда текущий этап завершился неудачно, однако один из моих этапов возвращает ошибку, но все еще продолжает выполнять следующийэтапы.

Я пытался использовать sh 'exit 1', currentStage.result = 'FAILED', если условие else для проверки результата этапа, но безрезультатно.

pipeline {
	agent none
	stages {
		stage ('one') {
			steps {
				echo 'Next stage should be skipped if this stage fails'
				script {
					try {
						sh '''#!/bin/bash -l
						source ~/.nvm/nvm.sh
						nvm use node
						node somefile.js'''
					}
					catch (e) {
						currentBuild.result = 'FAILURE';
						throw e
					}
				}
			}
  	}
		stage ('two') {
			steps {
				echo 'This stage should be skipped if prior stage throws an erorr'
			}
		}
	}
}

Я ожидаю, что второй этап будет пропущен, поскольку мой somefile.js выдает ошибку.

1 Ответ

2 голосов
/ 27 мая 2019

Вы можете использовать when-clause, который предоставляет Jenkins ( Источник ).

    stage ('two') {
        // Skip this stage if pipeline has already failed
        when { not { equals expected: 'FAILURE', actual: currentBuild.result } }
        steps {
            echo 'This stage should be skipped if prior stage throws an erorr'
        }
    }
...