请求协助:如何让Jenkins使用服务器已安装的npm 5.8版本?
问题解决思路与配置步骤
这问题我之前帮团队排查过好几次,本质是Jenkins的执行环境和你登录服务器时的shell环境变量路径不一致导致的——你手动登录时用的是管理员用户的PATH,而Jenkins默认用的是自身运行用户(一般是jenkins用户)的PATH,优先级不一样就调用了Node自带的旧版本npm。
你可以让管理员按下面这几步配置:
- 先确认全局npm的准确路径:让管理员在服务器上登录shell,执行
which npm,会得到类似/usr/local/bin/npm的路径(这就是全局安装的5.8版本的位置),把这个路径记下来。 - 调整Jenkins的全局环境变量:
- 进入Jenkins后台的「Manage Jenkins」→「Configure System」
- 找到「Global properties」区域,勾选「Environment variables」
- 添加一个变量,Name填
PATH,Value填刚才拿到的全局npm路径加上:$PATH,比如/usr/local/bin:$PATH。这样Jenkins执行构建时会优先从这个路径找npm,覆盖Node自带的版本。
- (备选)如果你们用了Jenkins的NodeJS插件:
- 进入「Manage Jenkins」→「Global Tool Configuration」
- 找到NodeJS的配置项,在对应的Node安装条目里,找到「Custom npm path」的设置,把刚才的全局npm路径填进去,替代默认的自带npm。
- 最后验证:让管理员新建一个简单的自由风格任务,只执行
npm -v和which npm这两个命令,构建后查看输出,确认版本显示5.8,路径是全局的那个就搞定了。
内容的提问来源于stack exchange,提问作者Devon Holcombe
相关产品推荐
相关产品推荐

