After reading Jenkins tutorial explaining Pipeline plug-in, it seems that plug-in should make it possible to implement Post-Build steps. However documentation is rather limited in regard to specific instructions.
For example I wonder how to implement:
- Run only if build succeeds
- Run only if build succeeds or is unstable
- Run regardless of build result
Run only if build succeeds
stage 'build'
... build
... tests
stage 'post-build'
...
(Or add -Dmaven.test.failure.ignore=false
to the MAVEN_OPTS
)
Run only if build succeeds or is unstable
stage 'build'
... build
try {
... tests
} catch {
...
}
stage 'post-build'
...
(Or add -Dmaven.test.failure.ignore=true
to the MAVEN_OPTS
)
Run regardless of build result - could it be done using try / catch / finally
?
try {
stage 'build'
...
} catch {
...
} finally {
stage 'post-build'
...
}
(I've noticed that final build status is set as SUCCESS even though some stages, ie. 'build', have failed as it set based on last stage. Does that mean final build status need to explicitly set, ie.currentBuild.result = 'UNSTABLE'
? )
The best way is to use post build action in the pipeline script.
Handling Failures
Declarative Pipeline supports robust failure handling by default via its post section which allows declaring a number of different "post conditions" such as: always, unstable, success, failure, and changed. The Pipeline Syntax section provides more detail on how to use the various post conditions.
Jenkinsfile (Declarative Pipeline)
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'make check'
}
}
}
post {
always {
junit '**/target/*.xml'
}
failure {
mail to: [email protected], subject: 'The Pipeline failed :('
}
}
}
The documentation is below https://jenkins.io/doc/book/pipeline/syntax/#post