I am looking for the cleanest way to exit a declarative Jenkins pipeline, with a success status. While exiting with an error is very neat using error step , I couldn't find any equal way to exit with success code. E.G:
stage('Should Continue?') {
when {
expression {skipBuild == true }
}
steps {
echo ("Skiped Build")
setBuildStatus("Build complete", "SUCCESS");
// here how can I abort with sucess code?
// Error Would have been:
// error("Error Message")
}
}
stage('Build') {
steps {
echo "my build..."
}
}
For Example with a scripted build, I could achieve it with the following code:
if (shouldSkip == true) {
echo ("'ci skip' spotted in all git commits. Aborting.")
currentBuild.result = 'SUCCESS'
return
}
While I am aware of the ability to add a script step to my declarative pipieline, I was hoping to find a cleaner way.
Another approach could be throwing an error and catch it somewhere down the line, but again it quite messy.
Is there a cleaner way?
A solution that worked for me was to create a stage with sub-stages and put the check in the top level stage.
stage('Run if expression ') {
when {
expression { skipBuild != true }
}
stages {
stage('Hello') {
steps {
echo "Hello there"
}
}
}
}
So I put all the stages that I want to continue inside this stage. And everything else outside of it. In your case you would put all your build stages inside the stage with when check.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With