前几天安装前端包依赖包报错,定位到的原因是构建机器的 Npm 版本过低,当时的解决方案是直接升级了构建机器的 Node 版本,如果构建机器较多,升级和维护环境也是个麻烦事儿,以下是对 Jenkins 环境使用 node 命令的几种方式整理。
- 在构建的机器上直接安装 Node 指定版本
- 借助 nvm-wrapper 插件安装指定版本,这种方式可以同时使用多个版本(推荐)
- 构建机器上安装 nvm,Shell 脚本中加载 nvm 环境变量(仅限自由软件风格)
直接安装
Ubuntu 20.04
# Add NodeSource PPA
$ curl -s https://deb.nodesource.com/setup_16.x | sudo bash
# Install NodeJS 16
$ sudo apt install nodejs -y
# Confirm the installed version of NodeJS
$ node -v
使用 jenkins 插件 nvm-wrapper
插件地址:https://plugins.jenkins.io/nvm-wrapper/
安装:“系统管理” - “插件管理” - 搜索 “nvm-wrapper” 并安装,重启后生效。借助 nvm-wrapper,它能自动判断当 node 版本不存在时自动下载。
自由软件风格的使用
首先指定在 nvm 模式下使用 Node(Run the build in an NVM managed environment)
其它参数选填,留空后的字段会在运行后自动填充上内容。
而后的 Shell 脚本中,可以直接使用 node 和 nvm 命令。
流水线 Pipeline 中使用
Jenkinsfile
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
nvm("v12.0.0") {
sh 'node -v'
}
nvm("v16.19.0") {
sh 'node -v'
}
}
}
}
}
Shell 脚本加载 nvm 环境变量
这种方式直接将 nvm 安装后加载的环境变量复制到脚本中,临时调试或特殊场景可能会用到,不推荐。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
npm --registry https://registry.npmjs.org install
npm run build:stage
运行流水线,指定版本 Node 成功,输入内容如下