如何在Jenkins中为Ubuntu代理节点配置Node.js的PATH环境变量?
Jenkins代理节点Node.js PATH问题解决方法
问题回顾
Ubuntu 20.04的Jenkins代理节点本地执行node -v能返回v16.20.1,但流水线中直接调用node -v报错"node: not found",手动通过withEnv设置PATH时因路径错误未生效,还出现durable脚本文件为空的情况。
核心原因
- 之前的PATH配置错误:添加的是Node可执行文件的路径(
/home/jenkins/.nvm/versions/node/v16.20.1/bin/node),而非包含node的目录路径。 - Jenkins代理启动的是非交互式非登录Shell,不会自动加载nvm的初始化脚本(比如
.bashrc或.profile里的配置),导致全局PATH不包含node的目录。
解决方案
方案1:修正withEnv的PATH配置
将PATH改为Node所在的bin目录,而非具体可执行文件:
pipeline { agent { label 'ubuntu-server' } stages { stage('Hello World') { steps { withEnv(["PATH=/home/jenkins/.nvm/versions/node/v16.20.1/bin:$env.PATH"]) { sh 'echo $PATH' sh 'node -v' } } } } }
方案2:在Jenkins代理节点配置全局环境变量
- 进入Jenkins管理页面 → 管理节点 → 选中
ubuntu-server节点 → 点击"配置" - 找到"节点属性",勾选"环境变量"
- 添加环境变量:
- 键:
PATH - 值:
/home/jenkins/.nvm/versions/node/v16.20.1/bin:$PATH
- 键:
- 保存配置后,重新运行流水线
方案3:在流水线中手动加载nvm配置
直接在Shell命令中加载nvm的初始化脚本,让nvm自动配置PATH:
pipeline { agent { label 'ubuntu-server' } stages { stage('Hello World') { steps { sh 'source /home/jenkins/.nvm/nvm.sh && node -v' } } } }
关于durable脚本文件为空的问题
这个问题通常是Jenkins临时文件生成的偶发异常,修正PATH配置后重新运行流水线即可解决;如果仍出现,可重启Jenkins代理节点再试。
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

