使用位存储桶scp管道将代码部署到我的服务器后,我正在使用另一个管道来运行脚本来安装节点模块并启动节点服务器,但是管道的结果为失败状态并显示为
./ server-run.sh:第1行:npm:找不到命令 ./server-run.sh:第2行:pm2:找不到命令
以下是我的yml文件
image: node:10.15.3
pipelines:
custom:
test:
- step:
caches:
- node
script: # Modify the commands below to build your repository.
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: '/var/www/stockTest/server'
LOCAL_PATH: 'server/*'
server-start:
- step:
caches:
- node
script:
- ssh $USER@$SERVER "cd /var/www/stockTest/server && ./server-run.sh"
server-run.sh
npm i
pm2 start server-start.js --name stockTest
答案 0 :(得分:0)
由于未安装pm2,因此必须首先安装pm2。
尝试执行pm2之前
或您可以给
答案 1 :(得分:0)
我遇到了完全相同的问题。 所以我对我的文件有这些命令:
whoami
which npm
哪个输出:
LifecycleEvent - ApplicationStart
Script - cicd/development/scripts/start_server.sh
[stdout]ec2-user
[stderr]which: no npm in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
所以它找不到 npm
但不是因为它不是正确的用户,所以我做了一个 :
$ which npm
~/.nvm/versions/node/v15.12.0/bin/npm
后来才明白是npm安装的地方造成的。
所以我只是下载二进制文件并将其放入 /usr/local/lib/nodejs
然后它就像一个魅力。
答案 2 :(得分:0)
1> 在您的服务器终端中运行 echo $PATH
这将给出以下输出 /home/ubuntu/.nvm/versions/node/v16.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin :/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
2> 现在打开 nano /etc/environment 并粘贴如下所示的路径
PATH="/home/ubuntu/.nvm/versions/node/v16.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
这肯定会解决您的问题。