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/1c77d1a9-0272-40be-bfc0-dbb7e3184db7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to