Bianca Reyes
Bianca Reyes

Reputation: 21

Jenkins Pipeline still executes following stages even though current stage failed

I'm implementing a try catch block on most of my stages inside my jenkins pipeline to skip all the following stages when the current stage fails however, one of my stages is returning an error but still continues to execute the next stages.

I've tried using sh 'exit 1', currentStage.result = 'FAILED', if else clause to check the stage result but to no avail.

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'
			}
		}
	}
}

I expect stage two to be skipped as my somefile.js is throwing an error.

Upvotes: 2

Views: 1126

Answers (1)

Michael Kemmerzell
Michael Kemmerzell

Reputation: 5256

You can use the when-clause that Jenkins provides (Source).

    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'
        }
    }

Upvotes: 2

Related Questions