Как развернуть приложение rails на героку от travis-ci?
Есть ли способ развернуть приложение heroku rails после успешной сборки travis-ci?
4 ответа
Travis CI теперь имеет встроенную поддержку для развертывания в Heroku: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
Я только что реализовал этот случай с моим приложением. Это на самом деле не так сложно сделать, но требует некоторых шагов:
- Тебе нужен твой герой API ключ
- Посмотрите эту суть для примера
.travis.yml
и получитьtravis_deployer.rb
скрипт - Затем установите гем travis, посмотрите ответ на другой вопрос о том, как защитить ваш ключ API.
- Если вас это не волнует, просто используйте пример из приведенного выше.
- Бежать
travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
- Скопируйте результат в свой
.travis.yml
в разделе env -> global
travis_deployer.rb
файл заботится о ключах ssh и удаленной ветке для героку.
Если вы выполнили все эти шаги, вы .travis.yml
может выглядеть так:
env:
global:
- secure: "1u21hjnmHjkghduUIJhhs76saljlkajdlfhGhgdJgfaVtgasfLLmNBnb87dad="
after_success:
- gem install heroku
- yes | ruby travis_deployer.rb
- heroku keys:clear
- yes | heroku keys:add
- git push heroku master
Вот версия, которую я нашел в блоге Марка Бейтса. Это похоже на Оди, просто это зависит от after_script
в вашем .travis.yml
файл один.
Прежде всего, используйте функцию Travis для шифрования переменных среды, чтобы ваши секретные ключи API оставались защищенными:
gem install travis travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY
Затем добавьте следующее к вашему
.travis.yml
файл:env: global: - secure: YOUR_SECURED_HEROKU_API_KEY after_script: # Install the Heroku gem (or the Heroku toolbelt) - gem install heroku # Add your Heroku git repo: - git remote add heroku git@heroku.com:YOUR_HEROKU_APP.git # Turn off warnings about SSH keys: - echo "Host heroku.com" >> ~/.ssh/config - echo " StrictHostKeyChecking no" >> ~/.ssh/config - echo " CheckHostIP no" >> ~/.ssh/config - echo " UserKnownHostsFile=/dev/null" >> ~/.ssh/config # Clear your current Heroku SSH keys: - heroku keys:clear # Add a new SSH key to Heroku - yes | heroku keys:add # Push to Heroku! - yes | git push heroku master
И все готово: внесите свои новые изменения и наслаждайтесь развертыванием в Heroku через TravisCI.
Изменить: Если вы получаете какие-либо ошибки на travis encrypt
, это может быть вашим решением.
Я только думал о таком сценарии, хотя я не рассматривал Heroku как платформу выбора. Во всяком случае, это то, что я придумал:
- Запросы на извлечение идут в ветку "разработка"
- Трэвис протестирует запрос на извлечение для вас
- Если мы собираемся развернуть то, что в данный момент находится в стадии "разработки" - люди извлекают запрос, просматривают и объединяют его в ветку "релиз / кандидат"
- Тесты Трэвиса снова объединены
- После того, как тест по этой ветке пройден - заставьте Travis создать запрос на извлечение, ориентированный на "выпуск / производство" (возможно, написать оболочку для GitHub API для создания фактической формы запроса на извлечение Travis).
- В зависимости от того, хотим ли мы на самом деле развернуть или нет, человек сливается (в "выпуск / производство") или закрывает запрос на извлечение, созданный из Travis
- У вас должен быть хост развертывания или каждый из хостов приложения (если у вас их много и вы не хотите иметь SPF) для отслеживания ветви "выпуск / производство".
Я уверен, что вы могли бы реализовать приложение Heroku, которое будет выполнять роль хоста развертывания или что-то еще более сумасшедшее.
Кроме того, вы можете попробовать, чтобы Travis уведомлял вас через IRC и имел на стороне клиента другого бота IRC, который будет иметь доступ к вашему личному SSH-ключу и отправит Heroku, вы также можете реализовать интерфейс подтверждения с помощью частный разговор с вашим собственным ботом или интерфейсом GUI со скриптом с надписью "Вперед!" кнопка. Если вы не такой старый, вы можете использовать Hubot для этой цели.
Кстати, вы можете также ввести какую-то промежуточную ветку или что-то еще, что вам нравится, между некоторыми из вышеперечисленных шагов. Вам, вероятно, также следует использовать теги, и при откате нужно просто вставить известный рабочий тег в "выпуск / производство", откуда он будет выбран вашим сценарием развертывания.