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.