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/91c6da9f-3be9-4a02-8889-f54299439dc4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to