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 [email protected] 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/196f4d91-2b7b-441f-b080-f54595c71439n%40googlegroups.com.
