When using the Jenkins pipeline where each stage runs on a different agent, it is good practice to use agent none
at the beginning:
pipeline { agent none stages { stage('Checkout') { agent { label 'master' } steps { script { currentBuild.result = 'SUCCESS' } } } stage('Build') { agent { label 'someagent' } steps { bat "exit 1" } } } post { always { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "[email protected]", sendToIndividuals: true]) } } }
But doing this leads to Required context class hudson.FilePath is missing
error message when the email should go out:
[Pipeline] { (Declarative: Post Actions) [Pipeline] step Required context class hudson.FilePath is missing Perhaps you forgot to surround the code with a step that provides this, such as: node [Pipeline] error [Pipeline] }
When I change from agent none
to agent any
, it works fine.
How can I get the post
step to work without using agent any
?
wrap the step
that does the mailing in a node
step:
post { always { node('awesome_node_label') { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "[email protected]", sendToIndividuals: true]) } } }
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