I am on the same boat, need to set an env var during built to be picked up 
by emailExt jelly template. Would this work?  agent set the env, master 
sends mail with env token replacement?

Thanks

-Dan

On Thursday, May 11, 2017 at 1:46:20 PM UTC-7, JG wrote:
>
> Thanks! This is working for me. However contrary to your comment about 
> parameters and environment, I am able to set a variable in environment 
> block referencing the value of a parameter. It's only when I included the 
> ${currentBuild} reference that it wouldn't set the variable.
>
> On Wednesday, May 10, 2017 at 10:31:23 PM UTC-5, Kevin Burnett wrote:
>>
>> This is a way to accomplish what you're trying to do:
>>
>> #!groovy
>>
>> // assign to this variable in the first stage (see below), and then you 
>> can use it throughout your pipeline
>> // not quite as clean as using the environment block, but it works. the 
>> problem seems to be that
>> // the environment block is "compiled" at the same time as the parameters 
>> block, etc, so the things
>> // that you want to use to set up an environment variable (params, other 
>> env vars) are not yet available.
>> def buildRevision = "UNKNOWN"
>>
>> pipeline {
>>     agent {
>>         label "linux"
>>     }
>>     parameters {
>>         string(name: "releaseName", defaultValue: "RM_TEST", description: 
>> "Ivy 
>> release spec")
>>     }
>>     tools {
>>         jdk 'jdk1.8.0_102'
>>         maven 'maven-3.2.5'
>>     }
>>     stages {
>>         stage("dummy") {
>>             steps {
>>                 script {
>>                     buildRevision = 
>> "${params.releaseName}.${env.BRANCH_NAME}.${currentBuild.startTimeInMillis}.${env.BUILD_ID}"
>>                 }  
>>                 echo "buildRevision: ${buildRevision}"
>>             }
>>         }
>>     }
>> }
>>
>>
>> On Wednesday, May 10, 2017 at 1:42:11 PM UTC-4, JG wrote:
>>>
>>> Unfortunately not.
>>>
>>> [branch_jenkins-dummy_master-ZKZSOZRU2C4BR7MTP6RRGC4D2OPUWJONM6DQP6YFBP3UB5R3DCYQ]
>>>  
>>> Running shell script
>>> + env
>>> + sort
>>> BRANCH_NAME=master
>>> BUILD_DISPLAY_NAME=#13
>>> BUILD_ID=13
>>> BUILD_NUMBER=13
>>> BUILD_REVISION=null
>>> BUILD_TAG=jenkins-testing-multibranch-jenkins-dummy-master-13
>>> ...
>>>
>>> It's specifically the inclusion of ${currentBuild.*property*} in the 
>>> variable declaration within the *environment{}* block that leaves the 
>>> variable null.
>>>
>>> On Wednesday, May 10, 2017 at 12:07:31 PM UTC-5, Cuong Tran wrote:
>>>>
>>>> Does it work with this?
>>>>
>>>> withEnv(["BUILD_REVISION=${env.BUILD_REVISION}"]) {
>>>>         sh "env | sort"
>>>> }
>>>>
>>>> On Wednesday, May 10, 2017 at 8:20:45 AM UTC-7, JG wrote:
>>>>>
>>>>> I'm trying to set an env variable globally in my *pipeline {} *with a 
>>>>> concatenation of build details like this
>>>>>
>>>>> #!groovy
>>>>> pipeline {
>>>>>     agent {
>>>>>         label "linux"
>>>>>     }
>>>>>       parameters {
>>>>>         string(name: "releaseName", defaultValue: "RM_TEST", 
>>>>> description: "Ivy release spec")
>>>>>     }
>>>>>     tools {
>>>>>         jdk 'jdk1.8.0_102'
>>>>>         maven 'maven-3.2.5'
>>>>>     }
>>>>>     environment {
>>>>>         BUILD_REVISION = 
>>>>> "${params.releaseName}.${env.BRANCH_NAME}.${currentBuild.startTimeInMillis}.${env.BUILD_ID}"
>>>>>         RELEASE_NAME = "${params.releaseName}"
>>>>>     }
>>>>>     stages {
>>>>>         stage("dummy") {
>>>>>             steps {
>>>>>                 sh "echo 
>>>>> \"${params.releaseName}.${env.BRANCH_NAME}.${currentBuild.startTimeInMillis}.${env.BUILD_ID}\""
>>>>>                 sh "env | sort"
>>>>>             }
>>>>>         }
>>>>>     }
>>>>> }
>>>>>
>>>>> and it seems to be silently failing. The *echo* command prints the 
>>>>> value as expected, but the *env *does not include a *BUILD_REVISION* 
>>>>> variable (the *RELEASE_NAME* env variable is shown in the output of 
>>>>> *env*. I also tried setting the *BUILD_REVISION* in an *environment{}* 
>>>>> block 
>>>>> within the stage, and also tried using a string property of 
>>>>> *currentBuild*. Nothing seems to work.
>>>>>
>>>>> It seems to work using *withEnv* 
>>>>>
>>>>> steps {
>>>>>     sh "echo 
>>>>> \"${params.releaseName}.${env.BRANCH_NAME}.${currentBuild.startTimeInMillis}.${env.BUILD_ID}\""
>>>>>     
>>>>> withEnv(["BUILD_REVISION=${params.releaseName}.${env.BRANCH_NAME}.${currentBuild.startTimeInMillis}.${env.BUILD_ID}"])
>>>>>  
>>>>> {
>>>>>         sh "env | sort"
>>>>>     }
>>>>> }
>>>>>
>>>>> But I'll need to use the variable in multiple stages so I'd prefer it 
>>>>> to be in a global *environment{}* block.
>>>>>
>>>>

-- 
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/bd7297e2-8f8c-4008-890c-7853b12e503d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to