Introduction
Jenkins, a renowned automation server, often requires managing environment variables (env variables) to streamline builds, handle credentials securely, and customize jobs. Understanding how to manage these variables effectively can vastly improve your CI/CD pipelines.
Env variables in Jenkins manage paths and credentials, control build scripts and steps, and allow for parameterized jobs. This tutorial explores effective management techniques, complete with practical examples.
Basic Environment Variables
Start with Jenkins’ own environment variables by navigating to “Manage Jenkins > System Information“. Here, system-level variables are listed. To set a job-specific env variable, use the “EnvInject Plugin“.
Example:
STAGE=productionThis variable can be accessed in build steps:
echo '${STAGE}'
# Outputs: productionParameterized Builds
Parameterized builds allow users to input variables for each build. Add parameters in job configuration:
This build is parameterizedDefining a string parameter:
Name: ENVIRONMENT
Default Value: testReference it in scripts:
echo 'Deploying to ${ENVIRONMENT}'
# Outputs: Deploying to testUsing Credentials Securely
Manage sensitive data like passwords using Jenkins Credential Plugin. Add credentials and reference them using the env variable:
withCredentials([string(credentialsId: 'my-credential-id', variable: 'PASSWORD')]) {
echo 'Password is ${PASSWORD}'
}Advanced Usage: Pipeline Script
In a Jenkinsfile, leverage the power of pipelines to define env variables:
pipeline {
agent any
environment {
MY_VAR = 'value'
}
stages {
stage('Example') {
steps {
echo 'The value of MY_VAR is ${MY_VAR}'
}
}
}
}This section introduces more complex scenarios like matrices for parallel execution across different environments.
Injecting Env Variables from Scripts
Using the EnvInject plugin or pipeline steps, dynamically create env variables from scripts:
sh 'echo MY_DYNAMIC_VAR=some_value > env.properties'
envInject propertiesFilePath: 'env.properties'Reflecting real-time changes and facilitating complex, dynamic setups.
Conclusion
Managing env variables in Jenkins boosts automation capabilities, supports complex CI/CD pipelines, and ensures secure handling of credentials. By mastering these techniques, developers can significantly optimize Jenkins-driven processes.