一、环境说明

  • CentOS 7.6
  • Jenkins 2.164.3
  • Node 14.13.0

二、问题说明

服务器 Node 版本原为 10.13.0,后因部署新项目需使用 14.13.0 版本。因此全局卸载 Node,安装 NVM 来管理 Node 。当使用 Jenkins 构建时候,发生 /usr/bin/env: node: 没有那个文件或目录,如下图

三、问题排查过程

1、确定服务器 NVM 和 Node 是否正常(没问题)

2、确定 NVM 是否已自动创建 Node 环境变量(没问题)

3、确定 Jenkins 执行脚本是否识别 Node(有问题)


4、确定 Jenkins 执行脚本是否识别 Node 环境变量(有问题)


5、经与运维人员沟通,增加以下两条命令,可正常执行(PS:服务器一般由运维人员管理,安装 NVM 经过领导同意后我才折腾)


6、几步折腾后,疑惑:NVM 安装都是重启终端才能识别,难道 Jenkins 也要重启才能识别 Node ?结果依然没用。。。


7、和运维人员继续沟通,通过 source /etc/profile 更新环境变量,依然没用。。。

四、通过全局属性添加环境变量来识别 Node

系统管理 > 系统设置 > 全局属性 > 环境变量

五、通过安装 nvm-wrapper 插件管理构建 Node

虽然可以通过 export 环境变量和 Jenkins 中配置环境方式让 Jenkins 识别到 Node,可满足不了不同的项目版本使用不同的 Node 版本需求,而 nvm-wrapper 则可以做到

1、在 Jenkins 中安装 nvm-wrapper 插件,系统管理 > 插件管理 > 可选插件

2、配置项目级别 Node 版本,项目(要构建的项目) > 配置 > NVM Settings

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐