Вы не обнаружите ошибок в вашем «документе».
Последняя команда exit
и без кода выхода по умолчанию будет 0
, что является успешным.
Поскольку последняя команда вашего ssh
имеет успех, вся команда считается успешной, а сборка - успешной.
Самый простой способ исправить это: цепь все команды с &&
так:
cd /path/to/app && git pull && bower install && npm install && grunt build && cp -r /path/to/app/dist/* /path/to/dist/ && forever restartall && exit
Лучший способ исправить, что: написать правильный сценарий оболочки, с обработкой ошибки, и выполнить это. Если вы слишком ленивы, чтобы ошибки обрабатывать каждую строку, вы можете запустить скрипт с set -e
который будет провалить скрипт на любой индивидуальной ошибки
Edit:
#!/bin/bash
appPath="/path/to/app"
distPath"/path/to/dist"
echo "My great deployment script"
echo "Deploying ${appPath} to ${distPath}
if [[ ! -w "${appPath}" ]]; then
echo "${appPath} is not writable, quitting"
exit 1
else
cd ${appPath} && git pull || { echo "Failed on 'git pull'"; exit 2; }
bower install || { echo "Failed on 'bower install'"; exit 3; }
npm install || { echo "Failed on 'npm install'"; exit 4; }
grunt build || { echo "Failed on 'grunt build'"; exit 5; }
if [[ -w "${distPath}" ]]; then
cp -r ${appPath}/dist/* ${distPath}/ || { echo "Failed on 'copy'"; exit 1 }
forever restartall || { echo "Failed on 'forever restartall'"; exit 6 }
echo "Deployment successful"
exit 0
fi
fi
Вы затем выполнить его: ssh [email protected] 'bash -s' < myfile.sh
(если файл является локальным)
Или если вы разместите файл удаленно, то просто: ssh [email protected] '/path/to/remote/myfile.sh'
Можете ли вы подробнее остановиться на «написать сценарий оболочки свойств с помощью ручной строки»? Я хотел бы сделать это правильно, но я действительно нахожусь на грани моего опыта здесь! :] – lowe0292
Нет гарантии, что скрипт будет работать для вас – Slav