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.

Reply via email to