Есть ли способ развернуть приложение heroku rails после успешной сборки travis-ci?
Как развернуть приложение rails на героку из travis-ci?
Ответы (4)
Travis CI теперь имеет встроенную поддержку развертывания на Heroku: http://about.travis-ci.org/blog/2013-07-09-introduction-continuous-deployment-to-heroku/
Я только что реализовал этот случай с моим приложением. На самом деле это не так сложно сделать, но для этого требуется несколько шагов:
- Вам нужен ваш ключ API heroku
- Посмотрите эту суть для примера
.travis.ymlи получите скриптtravis_deployer.rb - Then install the travis gem, see the answer to another question on how to secure your API key.
- If you don't care about it, just use the example from gist above.
- Беги
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
after_script на after_success, иначе вы рискуете развернуть неработающий код.
- person Ivan; 23.04.2013
- for i in $(grep '[^\ ]*$' ~/.ssh/id_rsa.pub -o); do heroku keys:remove $i;done Который должен просто удалить только что добавленный ключ и ничего больше. Это означает, что если вы используете эту учетную запись для локальной разработки, вам не нужно постоянно добавлять свой ключ для каждого развертывания.
- person Ryan; 11.06.2013
Вот версия, которую я нашел в блоге Марка Бейтса а>. Он похож на Odi, только опирается на 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, это может быть вашим решением.
.travis.yml и доберется до ключей heroku: ясно, я вижу следующий код, и я не знаю, как указать адрес электронной почты heroku-cli: Installing CLI... 22.44MB/22.44MB Enter your Heroku credentials. Email:
- person Afolabi Olaoluwa Akinwumi; 08.10.2016
Я как раз думал о таком сценарии, хотя специально не рассматривал Heroku в качестве предпочтительной платформы. Во всяком случае, вот что я придумал:
- Запросы на вытягивание отправляются в ветку "development"
- Трэвис протестирует для вас запрос на включение
- Если мы собираемся развернуть то, что в настоящее время находится в "разработке", люди отправят запрос на извлечение, просмотрят и объединят его в ветку "релиз/кандидат".
- Трэвис снова тестирует после слияния
- После прохождения теста в этой ветке попросите Трэвиса создать запрос на вытягивание, нацеленный на "выпуск/производство" (возможно, напишите оболочку для GitHub API для создания фактической формы запроса на включение Трэвиса).
- В зависимости от того, действительно ли мы хотим развернуть или еще нет, человек выполняет слияние (в "выпуск/производство") или закрывает запрос на извлечение, созданный Трэвисом.
- Имейте узел развертывания или каждый из узлов приложения (если их много и вы не хотите иметь SPF) для отслеживания ветки "выпуск/производство".
Я уверен, что вы могли бы реализовать приложение Heroku, которое будет выполнять роль узла развертывания или что-то еще более сумасшедшее.
Кроме того, вы можете попробовать, чтобы Трэвис уведомлял вас через IRC, и иметь другого бота IRC на стороне вашего клиента, который будет иметь доступ к вашему личному SSH-ключу и делать отправку в Heroku, вы также можете реализовать там интерфейс подтверждения с помощью приватный разговор с собственным ботом или скриптовый графический интерфейс с кнопкой "Вперед!". Если вы не настолько олдскульны, вы можете использовать для этой цели Hubot.
Кстати, вы также можете ввести какую-то промежуточную ветку или что-то еще, что вам нравится, между некоторыми из вышеперечисленных шагов. Вероятно, вам также следует использовать теги, и откат просто поместит известный рабочий тег в "релиз/производство", откуда он будет подобран вашим сценарием развертывания.
config.assets.initialize_on_precompile = trueв application.rb, мне обычно приходилось предварительно компилировать свои активы перед ручным развертыванием в Heroku. После запуска$ heroku labs:enable user-env-compile -a YOUR_HEROKU_APPмне не нужно было запускатьrake assets:precompileв моем .travis.yml. Я просто надеюсь, что Heroku сохранит эту функциональность. - person Paul Fioravanti   schedule 23.12.2012after_scriptвыше наafter_successв ответах ниже. - person Paul Fioravanti   schedule 24.12.2012