Thanks a lot Victor, the links provided made it much clear now and the 
example worked just fine. You are always saving me hehe

El jueves, 11 de febrero de 2021 a las 22:11:15 UTC+1, 
[email protected] escribió:

> 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/16c44a41-f7a2-4c4e-94d3-c820bebdf138n%40googlegroups.com.

Reply via email to