What is the purpose of the environment directive in a Jenkins pipeline?
The environment directive is used to define environment variables that will be available to all steps within the pipeline or stage. It helps set values like paths, credentials, or flags that the build process needs.
Click to reveal answer
beginner
How do you define a simple environment variable named GREETING with the value Hello in a Jenkins declarative pipeline?
You define it inside the environment block like this:
environment {
GREETING = 'Hello'
}
Click to reveal answer
beginner
Can environment variables defined in the environment directive be used in shell script steps?
Yes, environment variables defined in the environment directive are accessible inside shell steps. For example, you can use $GREETING in a shell script to get the value.
Click to reveal answer
intermediate
What happens if you define an environment variable with the same name in both the pipeline-level and stage-level environment blocks?
The stage-level environment variable overrides the pipeline-level one for that stage only. This allows customizing variables for specific stages.
Click to reveal answer
intermediate
How can you use credentials securely with the environment directive in Jenkins?
You can use the credentials() helper inside the environment block to inject sensitive data like passwords or tokens securely. For example:
What will be the output when the Print stage runs?
medium
A. Build started
/usr/local/bin
B. $MESSAGE
$PATH
C. Build started
$PATH
D. Syntax error due to environment variables
Solution
Step 1: Understand environment variable usage
The environment directive sets MESSAGE and PATH variables accessible in steps.
Step 2: Check echo and shell commands
echo "$MESSAGE" prints the value of MESSAGE, which is "Build started". The shell command sh 'echo $PATH' prints the PATH variable value "/usr/local/bin".
Final Answer:
Build started
/usr/local/bin -> Option A
Quick Check:
Environment variables expand correctly in echo and sh [OK]
Hint: Environment variables expand in echo and shell commands [OK]
Common Mistakes:
Expecting literal variable names instead of values
Confusing shell and Groovy variable syntax
Assuming syntax error without cause
4. You wrote this environment block in your Jenkins pipeline:
environment {
SECRET_KEY = secret123
}
But the pipeline fails with a syntax error. What is the most likely cause?
medium
A. Using an invalid variable name SECRET_KEY
B. Environment block must be inside a stage
C. Missing quotes around the string value
D. SECRET_KEY cannot contain numbers
Solution
Step 1: Check environment variable value syntax
String values in environment variables must be quoted, e.g., SECRET_KEY = "secret123".
Step 2: Validate other options
Variable names with underscores and numbers are valid. Environment block can be at pipeline level. Numbers in variable names are allowed.
Final Answer:
Missing quotes around the string value -> Option C
Quick Check:
Quote string values in environment variables [OK]
Hint: Always quote string values in environment directive [OK]
Common Mistakes:
Forgetting quotes around strings
Thinking variable names can't have underscores
Placing environment block incorrectly
5. You want to set an environment variable VERSION dynamically based on a shell command output in a Jenkins declarative pipeline. Which approach correctly sets VERSION for use in later stages?
hard
A. Use environment { VERSION = sh(script: 'git describe --tags', returnStdout: true).trim() } directly in pipeline
B. Set VERSION inside a script block and use env.VERSION = ...
C. Declare VERSION as a parameter and assign shell output to it
D. Use environment { VERSION = "git describe --tags" } to run the command
The environment directive cannot run shell commands directly; it only sets static values.
Step 2: Use script block to assign dynamic value
Inside a script block, you can run shell commands and assign the output to env.VERSION for later use.
Step 3: Evaluate other options
Use environment { VERSION = sh(script: 'git describe --tags', returnStdout: true).trim() } directly in pipeline tries to run shell in environment block which is invalid. Declare VERSION as a parameter and assign shell output to it misuses parameters. Use environment { VERSION = "git describe --tags" } to run the command assigns command string literally.
Final Answer:
Set VERSION inside a script block and use env.VERSION = ... -> Option B
Quick Check:
Dynamic env vars need script block assignment [OK]
Hint: Use script block to set dynamic environment variables [OK]
Common Mistakes:
Trying to run shell commands directly in environment block
Confusing parameters with environment variables
Assigning command strings instead of output
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.