Скрипт развертывания с bash - PullRequest
0 голосов
/ 31 мая 2018

У меня был приведенный ниже сценарий развертывания, который я использовал ранее на экземпляре ec2, и он отлично работал, я остановил этот экземпляр и выдал новый экземпляр, но сценарий не будет работать на этом новом, в частности код, который долженделать с npm и pm2.Он говорит, что эти команды не существуют.

Я установил nodejs, npm и pm2 на экземпляр, и когда я ssh в экземпляр, и я могу запустить эти команды вручную.

tar  --exclude=./node_modules --exclude=./.git --exclude=./dist --exclude=./.env --exclude=./uploads -czvf deployment.tar.gz .
scp -r -i kp.pem deployment.tar.gz ubuntu@xx.xx.xxx.xxx:/home/ubuntu/api
ssh -i kp.pem ubuntu@xx.xx.xxx.xxx <<'ENDSSH'
    cd api
    tar -xvf deployment.tar.gz
    rm deployment.tar.gz
    rm ormconfig.json
    mv ormconfig.prod.json ormconfig.json
    mv .env.prod .env
    mkdir -p uploads
    npm install
    pm2 stop api
    pm2 delete api
    pm2 install typescript
    pm2 link xxxxxxxxx yyyyyyyyyy
    pm2 update
    pm2 start src/index.ts --source-map-support --name=api --trace
ENDSSH
rm deployment.tar.gz

Ниже я получаю сообщение об ошибке.

-bash: line 8: npm: command not found
-bash: line 9: pm2: command not found
-bash: line 10: pm2: command not found
-bash: line 11: pm2: command not found
-bash: line 12: pm2: command not found
-bash: line 13: pm2: command not found
-bash: line 14: pm2: command not found

1 Ответ

0 голосов
/ 31 мая 2018

Вероятно, ни один из этих файлов не находится на вашем пути.Вы можете либо добавить их к пути в команде ssh, либо запустить which npm и which pm2 при обычном входе в систему и заменить команды в ssh полными путями.

...