Jenkins Pipeline exposes 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:
// Declarative // pipeline { agent any stages { stage('Example') { steps { echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" } } } } // Script // node { echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" }
Setting 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.
// Declarative // pipeline { agent any environment { (1) CC = 'clang' } stages { stage('Example') { environment { (2) DEBUG_FLAGS = '-g' } steps { sh 'printenv' } } } } // Script // node { /* .. snip .. */ withEnv(["PATH+MAVEN=${tool 'M3'}/bin"]) { sh 'mvn -B verify' } }
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 . |