Jenkins Pipeline accessing environment variables
All environment variables are accessible using env
, e.g. ${env.JOB_NAME}
.
Okay this really vexed me for a while today. Ultimately, I was being done in by a couple of things:
- Single-quoted strings in Groovy mean "don't evaluate variables," just like it does in bash
- Using $ interpolation is completely unnecessary if you're just referencing the variable, so you can just do
env.JOB_NAME
.
This SO question proved to be the one that helped me crack the code: Jenkins Workflow Checkout Accessing BRANCH_NAME and GIT_COMMIT
Indeed just use ${env.JOB_NAME}
to access a known variable.
However if you need to access environment variable where name is given by another variable (dynamic access), just use env["your-env-variable"]
.
I had the problem where I configured 3 environment variables (in Jenkins -> Administer -> Configure System -> Environment variables
), let's name them ENV_VAR_1
, ENV_VAR_2
, ENV_VAR_3
.Now I want to dynamically access them, I can do as such :
def envVarName = "ENV_VAR_" + count // Suppose count is initialized in a loop somewhere above...def value = env[envVarName] // Will be resolved to env["ENV_VAR_1"] depending on count value
My environment variables in Jenkins configuration look like this :