jenkins环境变量配置分三级:全局(所有job共享,如version_prefix)、pipeline级(仅本流水线,用environment块)、job级(单job独有,可覆盖全局);maven项目需额外启用环境变量注入。

全局环境变量(推荐用于跨 Job 共享配置)
适合定义版本前缀、仓库地址、公司级开关等长期不变的值。
- 进入 Manage Jenkins → Configure System,向下滚动到 Global Properties 区域
- 勾选 Environment variables,点击 Add
- 添加键值对,例如:
VERSION_PREFIX → 1.3.0
RELEASE_REPO_URL → https://nexus.company.com/repository/maven-releases/
(注意:变量名全大写、无空格、URL 末尾保留斜杠) - 保存后,所有 Job 都可直接使用:
自由风格项目 Shell 步骤中写$VERSION_PREFIX
Pipeline 中写${env.VERSION_PREFIX}或env.VERSION_PREFIX
Jenkinsfile 中定义环境变量(推荐用于单流水线隔离)
适合临时开关、分支特定参数、或需动态计算的值,作用范围仅限当前 Pipeline。
- 在声明式 Pipeline 的
environment块中定义:
pipeline {
agent any
environment {
APP_ENV = 'staging'
BUILD_TIMEOUT = '30'
}
stages {
stage('Build') {
steps {
sh 'echo "Running in $APP_ENV, timeout: $BUILD_TIMEOUT"'
}
}
}
}
- 变量在该 Pipeline 所有 stage 中自动可用,无需额外导出
- 支持引用凭据(
credentialsId)、脚本计算(script { env.DEPLOY_TAG = sh(script: 'git describe --tags', returnStdout: true).trim() })
Job 级别环境变量(按需补充,避免全局污染)
适用于某个 Job 独有的路径、调试开关或临时覆盖值。
- 自由风格项目:在配置页勾选 Prepare an environment for the run(需安装 EnvInject 插件),然后在下方文本框中填入
DEBUG_MODE=true - Pipeline 项目:可在
environment块中覆盖全局变量,如VERSION_PREFIX = '1.3.0-rc1' - 注意:Job 级变量优先级高于全局变量,但不可被其他 Job 访问
Maven 项目特殊处理
Maven 默认不读取 Jenkins 环境变量,需显式启用注入。
- 在 Maven 项目的配置页,勾选 Inject environment variables to the build process
- 再勾选 Inject passwords to the build as environment variables(如需凭据)
- 之后 pom.xml 或 Maven 参数中就能用
${env.VERSION_PREFIX}或-Dversion.prefix=${env.VERSION_PREFIX}











