I'm trying to convert an existing Jenkins Pipeline to the new Declarative Pipeline and I was wondering how to handle correctly mail notifications ?
I'm currently using this code:
node {
try {
...
currentBuild.result = 'SUCCESS'
} catch (any) {
currentBuild.result = 'FAILURE'
throw any
} finally {
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: "[email protected]",
sendToIndividuals: true])
}
}
It works well, but I don't see how to use the new declarative syntax for this. I think something could be done by using post() and the different notifications, but I don't know exactly how. I've tried this:
post {
always {
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: "[email protected]",
sendToIndividuals: true])
}
}
But the problem is that it does not send any "Back to normal" mail.
How can I used the Mailer plugin in a Jenkins declarative pipeline in order to send "Back to normal" mails ?
Should use again a try/catch around all declarative syntax ?
Problem is that in the post section of declarative the currentBuild.result is not set to SUCCESS. FAILURE and ABORTED is set though. So the behaviour here seems to be inconsistent at the moment.
I've improved my answer from How to get same Mailer behaviour for Jenkins pipeline to handle this case better:
pipeline {
agent any
stages {
stage('test') {
steps {
echo 'some steps'
// error("Throw exception for testing purpose..")
}
}
}
post {
always {
script {
if (currentBuild.result == null) {
currentBuild.result = 'SUCCESS'
}
}
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: "[email protected]",
sendToIndividuals: true])
}
}
}
This can be done a lot simpler now by using the fixed
post-condition (Documentation).
Here's a quick example I wrote up in my sandbox pipeline project.
pipeline{
agent {
label 'Build'
}
stages{
stage('Build'){
steps{
script{
echo "Building..."
}
}
}
}
post{
success {
echo "Success"
}
failure {
echo "Failure"
}
fixed {
echo "Back to normal"
}
}
}
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