Ответ 1
Travis CI теперь имеет встроенную поддержку для развертывания в Heroku: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
Есть какой-либо способ развернуть приложение heroku rails после сборки успеха travis-ci?
Travis CI теперь имеет встроенную поддержку для развертывания в Heroku: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
Я только что реализовал этот случай с моим приложением. На самом деле это не так сложно сделать, но для этого требуются некоторые шаги:
.travis.yml
и получите travis_deployer.rb
scripttravis 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
Вот версия, которую я нашел на блоге 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
, это может быть вашим решением.
Я только что думал о таком сценарии, хотя я специально не рассматривал Heroku как платформу выбора. Во всяком случае, это то, что я придумал:
Я уверен, что вы можете реализовать приложение Heroku, которое будет обрабатывать роль хоста развертывателя или чего-то еще более сумасшедшего.
Кроме того, вы можете попробовать, чтобы Travis уведомил вас через IRC и у вас есть другой бот IRC на вашей стороне клиента, который будет иметь доступ к вашему персональному SSH-ключу и сделать нажатие на Heroku, вы также можете реализовать интерфейс подтверждения там посредством частной беседы с вашим собственным ботом или скриптовым интерфейсом GUI с "Go ahead!". кнопка. Если вы не такая старая школа, вы можете использовать Hubot для этой цели.
Кстати, вы могли бы также ввести какую-то промежуточную ветку или все, что вам нравится, между некоторыми из вышеперечисленных шагов. Вероятно, вам также следует использовать теги, и откат просто подтолкнет знающий рабочий тег к "выпуску/выпуску", откуда его подхватит ваш развертыватель script.