Подтвердить что ты не робот

Как развернуть приложение rails на героку из travis-ci?

Есть какой-либо способ развернуть приложение heroku rails после сборки успеха travis-ci?

4b9b3361

Ответ 2

Я только что реализовал этот случай с моим приложением. На самом деле это не так сложно сделать, но для этого требуются некоторые шаги:

Файл 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.