You can simplify it quite a bit with the post stage event https://www.jenkins.io/doc/book/pipeline/syntax/#post
The example pipeline uses the post *stages* section, you can use the one specific the stage 3 Another example can be found in https://www.jenkins.io/blog/2017/02/15/declarative-notifications/ Environment variables within an environment section are immutable, though you can use the script closure with the env map to set a new env variable that can be override For instance: stage(“stage 3”) { steps{ script{ env.FAILED_STAGE=env.STAGE_NAME } error ... } } Cheers See On Thursday, 11 February 2021 at 17:56:40 UTC jesusfern...@gmail.com wrote: > > I have a declarative pipeline with a few steps. at the end I send a message > to slack with some statistics of the compilation times and some more > information. I want to send in case it fails the stage at which it fails. I > have set a global variable but the function does not seem to be able to read > its value. This is a simplified version of what I have: > > ``` > def FAILED_STAGE > > def sendSlackNotifcation() > { > if ( currentBuild.currentResult == "SUCCESS" ) { > > slackSend message: "${currentBuild.result}", channel: '#jenkins_bot2' > } > > else { > > slackSend color : "#FF0000", message: "${FAILED_STAGE}", channel: > '#jenkins_bot2' > > } > } > > pipeline { > agent any > > stages { > stage('stage1') { > steps{ > echo "stage1" > } > } > > stage('stage2') { > steps{ > echo "stage2" > } > } > > stage("Stage 3") { > steps { > script { > FAILED_STAGE=env.STAGE_NAME > echo "${FAILED_STAGE}" > error "failed for some reason." > } > } > } > } > post { > failure { > sendSlackNotifcation() > } > } > > } > ``` > And this is the output I get: > ``` > 13:38:53 [Pipeline] { > 13:38:53 [Pipeline] stage > 13:38:53 [Pipeline] { (stage1) > 13:38:53 [Pipeline] echo > 13:38:53 stage1 > 13:38:53 [Pipeline] } > 13:38:53 [Pipeline] // stage > 13:38:53 [Pipeline] stage > 13:38:53 [Pipeline] { (stage2) > 13:38:53 [Pipeline] echo > 13:38:53 stage2 > 13:38:53 [Pipeline] } > 13:38:53 [Pipeline] // stage > 13:38:53 [Pipeline] stage > 13:38:53 [Pipeline] { (Stage 3) > 13:38:53 [Pipeline] script > 13:38:53 [Pipeline] { > 13:38:53 [Pipeline] echo > 13:38:53 Stage 3 > 13:38:53 [Pipeline] error > 13:38:53 [Pipeline] } > 13:38:53 [Pipeline] // script > 13:38:53 [Pipeline] } > 13:38:53 [Pipeline] // stage > 13:38:53 [Pipeline] stage > 13:38:53 [Pipeline] { (Declarative: Post Actions) > 13:38:53 Error when executing failure post condition: > > 13:38:53 groovy.lang.MissingPropertyException: No such property: > FAILED_STAGE for class: WorkflowScript > ``` > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/196f4d91-2b7b-441f-b080-f54595c71439n%40googlegroups.com.