О боже, почему это так сложно. Я потратил 3 дня, пытаясь заставить это, казалось бы, простое дерьмо работать.
Мне это нужно для: - установки npm на сервере CI (работает) - запуска тестов (работает) - создания интерфейса angular (работает) - отправки кода на сервер через rsync (работает) - ssh на сервер (работает) - - и установки npm ( не работает. умирает из-за предупреждений npm, я думаю) - - перезапустить процесс pm2 (не работает, поскольку нет элегантного способа сказать запуск или перезапуск)
На этапе развертывания у меня есть этот скрипт в пользовательском интерфейсе кодового корабля
rsync -avz --exclude 'node_modules' ~/clone/
[email protected]:/root/my-project/
ssh [email protected] cd /root/my-project && bash ./postDeploy.sh
Тогда сценарий postDeploy.sh
такой:
#!/bin/sh
export PATH=$PATH:/usr/local/bin
npm install --silent &> /dev/null
/usr/local/bin/pm2 stop --silent keystone &> /dev/null
/usr/local/bin/pm2 start keystone.js 2> /dev/null
Этим трюком пытаюсь проглотить ошибки. &> /dev/null
В проекте есть несколько уязвимостей, которые, к сожалению, находятся глубоко внутри основного модуля и не могут быть исправлены мной, поэтому в этом случае мне нужно, чтобы npm просто был тихим.
Еще есть вещь PM2, которая немного раздражает. Мне нужно подать команду остановки, но если служба не запущена, она завершится ошибкой, поэтому мне снова нужно проглотить ошибки. Команда запуска, вероятно, в порядке.
Я думаю, что, может быть, сейчас происходит то, что из-за того, что я проглатываю весь выходной код, запускающий скрипт предполагает, что он терпит неудачу?
Я пробовал использовать недоделанный инструмент отладки, но он волшебным образом запрашивает у меня пароль, когда я пытаюсь войти в систему ... А?
Также @codeship было бы замечательно, если бы 80% полезных статей, проиндексированных Google, не приводили к мертвым страницам на вашем сайте ...