Accessing Environment Variables in Jenkins Pipeline
📖 Scenario: You are setting up a Jenkins pipeline to automate a build process. You need to access environment variables inside the pipeline script to customize the build steps.
🎯 Goal: Build a Jenkins pipeline script that accesses and prints specific environment variables.
📋 What You'll Learn
Create a Jenkins pipeline script with a pipeline block
Access the environment variable BUILD_NUMBER
Access the environment variable MY_VAR
Print both environment variables using echo steps
💡 Why This Matters
🌍 Real World
Jenkins pipelines often need environment variables to customize builds, pass secrets, or configure deployment settings.
💼 Career
Understanding environment variables in Jenkins is essential for DevOps engineers to automate and manage CI/CD pipelines effectively.
Progress0 / 4 steps
1
Create a basic Jenkins pipeline skeleton
Write a Jenkins pipeline script starting with a pipeline block and a agent any directive.
Jenkins
Hint
Start by writing pipeline { and inside it add agent any to run on any available agent.
2
Add an environment block to define environment variables
Inside the pipeline block, add an environment block that defines a variable MY_VAR with the value hello.
Jenkins
Hint
Use the environment block inside pipeline and define MY_VAR = 'hello'.
3
Access and print environment variables in a stage
Add a stage named 'Print Env' with a steps block that uses echo to print BUILD_NUMBER and MY_VAR environment variables using env.BUILD_NUMBER and env.MY_VAR.
Jenkins
Hint
Inside stages, add a stage('Print Env') with steps that use echo to print env.BUILD_NUMBER and env.MY_VAR.
4
Print the environment variables output
Run the pipeline script and ensure the console output shows the lines Build number is: followed by the build number and My variable is: hello.
Jenkins
Hint
Run the pipeline and check the console output for the expected lines.
Practice
(1/5)
1. In a Jenkins Pipeline script, how do you access an environment variable named BUILD_NUMBER?
Jenkins Pipeline exposes environment variables via the env object.
Step 2: Access the variable using the correct syntax
You access BUILD_NUMBER as env.BUILD_NUMBER in the script.
Final Answer:
Using env.BUILD_NUMBER -> Option B
Quick Check:
env.VARIABLE_NAME = correct access [OK]
Hint: Always prefix environment variables with env. in Jenkins [OK]
Common Mistakes:
Trying to use variable name without env prefix
Using shell-style $VARIABLE inside Groovy script
Calling non-existent getEnv() method
2. Which of the following is the correct syntax to print the environment variable JOB_NAME in a Jenkins Pipeline script block?
easy
A. println("JOB_NAME")
B. echo $JOB_NAME
C. println(env.JOB_NAME)
D. print(JOB_NAME)
Solution
Step 1: Identify the correct way to print env variables in Groovy script
In Jenkins Pipeline Groovy scripts, use println(env.VARIABLE) to print environment variables.
Step 2: Check each option
println("JOB_NAME") prints the string "JOB_NAME" literally. echo $JOB_NAME uses shell syntax, invalid in Groovy. print(JOB_NAME) attempts to print JOB_NAME directly, but it's not available in Groovy scope without env prefix.
Final Answer:
println(env.JOB_NAME) -> Option C
Quick Check:
Use println(env.VARIABLE) to print env vars in script [OK]
Hint: Use println(env.VARIABLE) inside script blocks [OK]
But the output is empty. What is the likely cause?
medium
A. The environment block syntax is incorrect; use MY_VAR='hello' with quotes and no spaces around =
B. Environment variables must be accessed as env['MY_VAR'] not env.MY_VAR
C. The environment variable was not set correctly; use MY_VAR='hello' without spaces
D. You cannot access environment variables inside script blocks
Solution
Step 1: Check environment block syntax
In Jenkins Pipeline, environment variables must be assigned with no spaces around = and values in quotes, like MY_VAR='hello'.
Step 2: Identify the syntax error in the snippet
The snippet uses MY_VAR = 'hello' with spaces around = which is invalid and causes the variable not to be set.
Final Answer:
The environment block syntax is incorrect; use MY_VAR='hello' with quotes and no spaces around = -> Option A
Quick Check:
Use no spaces around = in environment block [OK]
Hint: No spaces around = in environment block assignments [OK]
Common Mistakes:
Adding spaces around = in environment variable assignment
Trying to access env vars incorrectly
Assuming script block can't access env vars
5. You want to pass a secret API key stored as an environment variable API_KEY to a shell command in Jenkins Pipeline. Which is the best way to do this securely?
hard
A. Use sh "curl -H 'Authorization: Bearer $API_KEY' https://api.example.com"
B. Use sh(script: "curl -H 'Authorization: Bearer ${env.API_KEY}' https://api.example.com")
C. Use sh(script: "curl -H 'Authorization: Bearer $API_KEY' https://api.example.com", environment: [API_KEY: env.API_KEY])
D. Use Jenkins credentials binding plugin to inject API_KEY and access it as env.API_KEY inside sh
Solution
Step 1: Understand secure handling of secrets in Jenkins
Secrets like API keys should be stored in Jenkins credentials and injected securely, not hardcoded or exposed in logs.
Step 2: Use credentials binding plugin
This plugin injects secrets as environment variables during the build, accessible as env.API_KEY inside sh without exposing them in logs.
Final Answer:
Use Jenkins credentials binding plugin to inject API_KEY and access it as env.API_KEY inside sh -> Option D
Quick Check:
Use credentials plugin for secrets, not plain env vars [OK]
Hint: Use Jenkins credentials plugin for secrets, not plain env vars [OK]
Common Mistakes:
Passing secrets directly in shell commands risking exposure
Using string interpolation exposing secrets in logs
Not using Jenkins credentials plugin for sensitive data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.