##前提
1.1、已安装Jenkins
1.2、git相关配置已完成
##安装nodejs
2.1、下载
地址:https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.gz(可以直接访问连接中的上层目录选择自己需要的版本)
直接下载包:wget https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.gz
2.2、解压
tar -zxvf node-v14.17.3-linux-x64.tar.gz -C /usr/local/
2.3、改名
mv node-v14.17.3-linux-x64 node
2.4、使node可被使用
有两种方法,我选第二种:
a、首先配置环境变量vi /etc/profile,添加以下配置信息:
/#nodejs
export NODEJS_HOME=/nodejs
export PATH=
N
O
D
E
J
S
H
O
M
E
/
b
i
n
:
NODEJS_HOME/bin:
NODEJSHOME/bin:PATH
export NODE_PATH=$NODEJS_HOME/lib/node_modules
然后使配置生效:source /etc/profile
b、建立建立软链接
ln -s /usr/local/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
2.5、确认可用
随便找个目录,node -v 、npm -v。
能够正常输出版本号即可用。
2.6、测试打包
a、到一个pull下来的前端项目的workspace下:cd /var/lib/jenkins/workspace/融合云-前端
b、执行npm install,无报错即成功
c、执行npm run build,使用ll命令查看当前目录下是否有dist文件夹,有则成功。
2.7、Jenkins的project配置如下:
我这里由于是项目部署在Jenkins本地服务器上,所以不需要把包上传到指定服务器,只要放到目标文件夹下就行了,然后我打包用的pnpm,正常来说npm够用了。也不用每一次都安装依赖包,除非开发人员引入新的依赖了。
##出现问题
1、npm install 时失败,原因是版本太高了 GYP 在最新版本的 Node (16) 上存在问题。
解决方案:使用版本低一些的node
2、npm install 失败 gyp ERR! stack Error: EACCES: permission denied, mkdirxxx
原因:npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。进行一些需要权限的操作时,就直接崩掉了。
解决方案:
a、专门建一个用于运行 npm 的高权限用户;
b、命令后加 --unsafe-perm 参数
3、npm run build 失败 报错是could not resolve 无法解析 原因:前端人员文件名大小写编写有误
解决方案:修改相关文件名
4、Jenkins打包是面向多个项目的,有些项目使用pnpm,但是pnpm要求的node版本较高(这里用的16.20)否则就不兼容;而一些项目又需要低版本。
解决方案:
1、使用版本低的pnpm,使其兼容node14
2、笨方法:安装两个版本node,一个14,一个16,加载依赖or编译前需要手动改下软连接,删除旧的新增一个(例如:ln -s /usr/local/nodejs/bin/node /usr/local/bin/node )。我这里都安装在/usr/local目录下面,14是node,16是nodejs。