Есть какой-либо способ развернуть приложение heroku rails после сборки успеха travis-ci?
Как развернуть приложение rails на героку из travis-ci?
Ответ 1
Travis CI теперь имеет встроенную поддержку для развертывания в Heroku: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
Ответ 2
Я только что реализовал этот случай с моим приложением. На самом деле это не так сложно сделать, но для этого требуются некоторые шаги:
- Вам нужен ваш ключ API героя
- Смотрите этот пример для примера
.travis.yml
и получитеtravis_deployer.rb
script - Затем установите драгоценный камень travis, см. ответ на другой вопрос о том, как защитить ключ API.
- Если вам все равно, просто используйте пример из gist выше.
- Запустить
travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
- Скопируйте результат в
.travis.yml
в разделе env → global
Файл travis_deployer.rb
позаботится о ssh-ключах и удаленной ветке для heroku.
Если вы выполнили все эти шаги, вы .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
Ответ 3
Вот версия, которую я нашел на блоге Mark Bates. Он похож на Odi's, так как он использует 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 [email protected]: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
, это может быть вашим решением.
Ответ 4
Я только что думал о таком сценарии, хотя я специально не рассматривал Heroku как платформу выбора. Во всяком случае, это то, что я придумал:
- Запросы Pull переходят в ветку разработки.
- Трэвис проверяет запрос на тягу для вас.
- Если мы собираемся развернуть то, что в настоящее время находится в "разработке" - люди вытаскивают запрос, просматривают и объединяют его в ветку "release/кандидат"
- Тесты Travis снова после объединения
- После того, как тест на этой ветке прошел - получите Travis для создания таргетинга запроса на выпуск "выпуск/производство" (возможно, напишите обертку для API GitHub для создания формы запроса Travis).
- В зависимости от того, хотим ли мы на самом деле развернуть или еще не совсем - человек сливается (в "выпуск/производство" ) или закрывает запрос на растяжение, созданный с помощью Travis
- Имейте либо хост развертывателя, либо у каждого из хостов приложений (если у вас много и не хотите иметь SPF) для отслеживания ветки "выпуска/производства".
Я уверен, что вы можете реализовать приложение Heroku, которое будет обрабатывать роль хоста развертывателя или чего-то еще более сумасшедшего.
Кроме того, вы можете попробовать, чтобы Travis уведомил вас через IRC и у вас есть другой бот IRC на вашей стороне клиента, который будет иметь доступ к вашему персональному SSH-ключу и сделать нажатие на Heroku, вы также можете реализовать интерфейс подтверждения там посредством частной беседы с вашим собственным ботом или скриптовым интерфейсом GUI с "Go ahead!". кнопка. Если вы не такая старая школа, вы можете использовать Hubot для этой цели.
Кстати, вы могли бы также ввести какую-то промежуточную ветку или все, что вам нравится, между некоторыми из вышеперечисленных шагов. Вероятно, вам также следует использовать теги, и откат просто подтолкнет знающий рабочий тег к "выпуску/выпуску", откуда его подхватит ваш развертыватель script.