CentOS Jenkins配置中的环境变量怎么设置
导读:CentOS 上 Jenkins 环境变量的设置方法与优先级 一 设置位置与优先级 推荐按以下顺序理解优先级(由高到低): 构建时临时变量:在 Pipeline 的 environment 或 withEnv 中设置,仅对当前构建/步...
CentOS 上 Jenkins 环境变量的设置方法与优先级
一 设置位置与优先级
- 推荐按以下顺序理解优先级(由高到低):
- 构建时临时变量:在 Pipeline 的 environment 或 withEnv 中设置,仅对当前构建/步骤生效。
- 节点级环境变量:在节点配置里设置,对该节点上运行的所有构建生效。
- 全局环境变量:在“系统管理 → 系统配置 → 全局属性”中设置,对所有项目生效。
- 操作系统级环境变量:如 /etc/profile、用户 ~/.bash_profile 等,Jenkins 进程若以 jenkins 用户启动,需要保证该用户能读取到这些变量。
- 同名变量覆盖规则:节点变量 > 全局变量 > 系统变量。在节点上设置的同名变量会优先生效。
二 在 CentOS 上配置操作系统级变量供 Jenkins 使用
- 以 jenkins 用户生效为例,编辑其环境文件(如 ~jenkins/.bash_profile 或 ~jenkins/.bashrc),追加变量并重新加载:
sudo -iu jenkins echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' > > ~/.bash_profile echo 'export MAVEN_HOME=/opt/apache-maven-3.8.6' > > ~/.bash_profile echo 'export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin' > > ~/.bash_profile source ~/.bash_profile - 验证 jenkins 用户环境:
sudo -iu jenkins env | egrep '^(JAVA_HOME|MAVEN_HOME|PATH)=' java -version mvn -v - 说明:Jenkins 若通过 systemd 启动,默认不加载交互式 shell 的 profile。如需注入,可在 systemd 服务中显式声明 Environment(见下一节示例)。
三 在 Jenkins 界面中配置变量
- 全局变量
- 路径:Dashboard → Manage Jenkins → System Configuration → System → Global properties → Environment variables
- 添加键值对,例如:JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64、MAVEN_HOME=/opt/apache-maven-3.8.6。
- 节点变量
- 路径:Dashboard → Manage Jenkins → Nodes and Clouds → 选择节点 → Configure → Node Properties → Environment variables
- 适合为某台构建机单独设置 PATH、JAVA_HOME、NPM 等,优先级高于全局变量。
- 项目级变量
- 在任务配置的 构建环境 中勾选“提供环境变量”,添加项目所需变量(如 DEPLOY_ENV=prod)。
- 使用方式
- 在 Shell 步骤中可直接使用 $VAR 或 ${ VAR} ;在 Pipeline 中通过 env.VAR 读取。
四 Pipeline 中设置与打印变量
- 声明式 Pipeline 示例(含 Node.js/npm 场景):
pipeline { agent any environment { NODE_HOME = '/opt/nodejs' PATH = "${ env.NODE_HOME} /bin:${ env.PATH} " JAVA_HOME = '/usr/lib/jvm/java-11-openjdk-amd64' MAVEN_HOME = '/opt/apache-maven-3.8.6' } stages { stage('Check') { steps { sh 'node -v' sh 'npm -v' sh 'java -version' sh 'mvn -v' sh 'echo "JAVA_HOME=$JAVA_HOME, MAVEN_HOME=$MAVEN_HOME"' } } } } - 脚本式或临时注入:
node { withEnv(["PATH=/opt/nodejs/bin:${ env.PATH} "]) { sh 'node -v & & npm -v' } } - 打印全部环境变量用于排查:
pipeline { agent any stages { stage('Dump') { steps { script { env.getEnvironment().each { k, v -> echo "${ k} = ${ v} " } } } } } } - 查看内置变量清单:访问 http://< JENKINS_URL> /env-vars.html。
五 常见问题与排查
- 构建机已装 Node.js/npm 但报错 “npm: command not found”
- 原因:Jenkins(以 jenkins 用户)未加载正确的 PATH。
- 解决:
- 方案 A:在节点属性里设置 PATH 指向 /opt/nodejs/bin(或其他 Node 安装路径)。
- 方案 B:在 systemd 服务中注入变量(示例):
sudo systemctl edit jenkins # 在打开的编辑器中添加: [Service] Environment="PATH=/opt/nodejs/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Environment="NODE_HOME=/opt/nodejs" # 保存后执行: sudo systemctl daemon-reload sudo systemctl restart jenkins
- 修改了 /etc/profile 但构建机里仍无效
- 原因:Jenkins 未以登录 Shell 执行 profile。
- 解决:改用 ~jenkins/.bash_profile 配置,或在 systemd 中显式设置 Environment 并重启服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Jenkins配置中的环境变量怎么设置
本文地址: https://pptw.com/jishu/788306.html
