Automatically created environment variables
Jenkins Pipeline automatically exposes and provides a value for a set of environment variables via the global variable env
, which is available from anywhere within a Jenkinsfile
. The full list of environment variables accessible from within Jenkins Pipeline is documented at
http://localhost:8080/pipeline-syntax/globals#env
, assuming a Jenkins controller is running on localhost:8080
, and includes:
- BUILD_ID
-
The current build ID, identical to BUILD_NUMBER for builds created in Jenkins versions 1.597+
- JOB_NAME
-
Name of the project of this build, such as "foo" or "foo/bar".
- JENKINS_URL
-
Full URL of Jenkins, such as
http://example.com:port/jenkins/
(NOTE: only available if Jenkins URL is set in "System Configuration".)
Referencing or using these environment variables can be accomplished like accessing any key in a Groovy Map, for example:
pipeline { agent any stages { stage('Example') { steps { echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" } } } }
node { echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" }
Setting user-defined environment variables
Setting an environment variable within a Jenkins Pipeline is accomplished differently depending on whether Declarative or Scripted Pipeline is used.
Declarative Pipeline supports an environment directive, whereas users of Scripted Pipeline must use the withEnv
step.
pipeline { agent any environment { (1) CC = 'clang' } stages { stage('Example') { environment { (2) DEBUG_FLAGS = '-g' } steps { sh 'printenv' } } } }
1 | An environment directive used in the top-level pipeline block will
apply to all steps within the Pipeline. |
2 | An environment directive defined within a stage will only apply the
given environment variables to steps within the stage . |
node { /* .. snip .. */ withEnv(["PATH+MAVEN=${tool 'M3'}/bin"]) { sh 'mvn -B verify' } }