我正在尝试使用Jenkins构建我的Node.js应用程序,但出现此错误:
-bash: npm: command not found
-bash: pm2: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我创建了一个部署文件,并将其添加到Jenkins的Execute shell中,它看起来像这样:
-#!/bin/sh
ssh ubuntu@development-server:ip <<EOF
cd ~/nodeweb
git pull
npm install
pm2 restart ecosystem.config.js
exit
EOF
在开发服务器上,我已经安装了npm和pm2模块。
答案 0 :(得分:0)
这是因为正常的 ssh 会话以非交互模式打开外壳,并且不提供 .bashrc
文件。
您的 npm 和 pm2 模块的 PATH
可以在 .bashrc
文件中配置,从而在您尝试通过非交互式 shell 执行 npm install
时抛出 not found 错误。
要使 ssh 使用交互模式,只需在 ssh 命令中使用 -i
标志。
#!/bin/sh
ssh ubuntu@development-server:ip 'bash -i' <<EOF
cd ~/nodeweb
git pull
npm install
pm2 restart ecosystem.config.js
exit
EOF