问题
基于Docker安装的Jenkins,然后创建了一个基于pipeline的Job构建vue项目
构建过程报错:
[Pipeline] sh
npm install
/var/jenkins_home/workspace/xxx-web@tmp/durable-bad60f53/script.sh: 1: npm: not found
Pipeline脚本:
node {
stage('安装') {
sh "npm install"
}
}
解决思路
docker exec -it jenkins bash 进入docker容器内安装npm并配置好环境变量PATH,执行/etc/profile
后执行npm -v
没有问题,Jenkins再次构建,还是不行,那问题出在哪里了?原来是对于node或maven的路径的环境变量是放在/etc/profile中的, 而/etc/profile只有在用户登录的时候才会被load,Jenkins在运行命令时,使用的是Non-login的方式,所以通过配置软链接的方式去解决。
最终解决方案
step1. docker exec -it -u 0 jenkins bash以root权限进入Jenkins容器;
step2. 配置npm执行命令软链接
ln -sv /usr/local/node-v14.15.4/bin/npm /usr/local/bin/npm
ln -sv /usr/local/node-v14.15.4/bin/node /usr/local/bin/node