Travis CI: Автоматическая доставка кода на удаленный сервер по SSH

CI
29.09.2018
Travis CI: Автоматическая доставка кода на удаленный сервер по SSH

В данной статье хотелось бы немного поговорить о тонкостях настройки Travis CI для доставки кода проекта по SSH.

Немного общей информации, как говорит википедиа, Travis CI - это распределённый веб-сервис для сборки и тестирования программного обеспечения, использующий GitHub в качестве хостинга исходного кода.

Внутри компании мы используем GitLab для хранения и управленя репозиториями кода проектов и у него есть свой CI (GitLab CI), который на мой взгляд тоже очень удобен, но для него нужно ставить отдельный сервер, а для проекта с открытым исходным кодом столько возни не очень хочется и тратить денег на отдельный сервер, а Travis CI позволяет бесплатно его использовать, за что спасибо им.

Главное, это файл в корне проекта .travis.yml, не в первой в статьях ссылаюсь на офф документацию, но как составить сам файл можно почитать тут, а я остановлюсь только на доставке кода по ssh на удаленный сервер.

Во первых, вам нужен аккаунт на GitHub.

Затем авторизваться на travis-ci.org и выбрать проект для использования с сервисом. Остальные настройки там примитивны, так что пойдем дальше.

Деплой приложения по ssh

В корне проекта, где у вас лежит файл .travis.yml, нужно сгенерировать ssh-ключи, добавить зашфированное значение ключа в travis.yml и залить на удаленный сервер, следующим образом:

генерируем ssh ключи:
ssh-keygen -t rsa -b 4096 -C 'build@travis-ci.org' -f ./deploy_key
добавляем закрытый ключ в .travis.yml и шифруем его (нужно сперва поставить утилиту от travis, вот тут почитать):
travis encrypt-file deploy_key --add
открытый ключ копируем на удаленный сервер, к которому будем подключаться из Travis (user и host ваши данные к удаленному серверу):
ssh-copy-id -i deploy_key.pub user@host
затем удаляем открытый и приватный ключ:
rm -f deploy_key deploy_key.pub
и добавляем зашифрованный файл в git:
git add deploy_key.enc

После, заливаем изменения и смотрим в консоли Travis CI результаты работы выполнения.

При подключении по ssh могут возникнуть проблемы с SSH Known Hosts, вот тут рассказано, что нужно добавить в файл .travis.yml для решения проблемы.