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/e4a4d350-4482-4424-a055-7d6be67cf8c2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to