Правильная непрерывная интеграция и постоянное развертывание с Git и Heroku

StackOverflow https://stackoverflow.com/questions/3127194

Вопрос

Я разрабатываю Ruby на веб-сайте Rails, используя Heroku и Git.

Какие инструменты и функции я должен использовать для настройки следующего просмотра процесса разработки?

Код> Регистрация> Авто тест> Авто развертывание

  • Я проверяю свой код в мою репозиторий (предпочтительный вариант, размещенный Git, как github)
  • Тесты автоматически запускаются, и веб-сайт развернут в моем положении Heroku App
  • Если тесты проходят, сайт автоматически развернут на моем производстве приложение Heroku
  • Если тесты проваливаются, я хочу быть уведомленным как-то.

Как бы вы сделали это?

Это было полезно?

Решение

Мы используем Честность. Отказ Это довольно простое решение - это не сделает все под солнцем, но это довольно легко настроить и обрабатывает наиболее распространенные случаи / функции использования. Также довольно легко взломать, если вы хотите, чтобы это сделал больше.

Государства по целостности:

Heroku является самым простым и быстрым способом развертывания целостности.

Однако:

ПРИМЕЧАНИЕ
Невозможно получить доступ к репозиториям над SSH на Heroku

Это связано с тем, что приложение вашей целостности понадобится ключ SSH. Это не невозможно, но определенно несколько обручей, чтобы прыгать. Вам нужно будет дать целостность закрытого ключа и поместить его в приложение, а затем взломать целостность, чтобы использовать эту клавишу SSH, когда она инициирует git clone.

Из вещей, которые вы перечислили, автоматическое развертывание, вероятно, является то, что большинство людей не ожидают, что их сервер CI (и целостность не предоставляет из коробки). Вам нужно будет настроить Git, чтобы использовать эту клавишу SSH и инициировать git push из правильного местоположения (проверил репозиторий).

К сожалению, я не знаю детали того, как это сделать - мы фактически управляем целостностью на VPS.

Другие советы

Circleci предлагает именно то, что вам нужно. Мы будем запустить ваши тесты на каждом толчке, развернуть их, если они пройдут (к Heroku или используют Capistrano / Tabe / что-нибудь на самом деле), и отправьте вам уведомления, если они потерпят неудачу.

в предисловие, я один из основателей кодеска (https://codeship.io.io.), который является сервисом, которая поддерживает именно это.

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

Постановка / производство за один ход

Всякий раз, когда вы нажимаете на свой мастер или определенную ветку развертывания, вы запускаете свои тесты, и если все они передают вам первое развертывание в своем приложении, запустите отдельные тесты (лаборатории Selenium или Sauce отлично подходят), и если это работает, включая миграцию вас Нажмите в ваше производственное приложение.

Это здорово, так как последняя версия всегда доступна в производстве, и мы уже давно используем этот цикл. Работает отлично для нас. Недостатком является то, что нажатие на постановку приложения Heroku занимает некоторое время. Если вы хотите запустить миграцию против копии ваших производственных данных, это требуется еще больше времени. Это не вечность, но это занимает пару минут.

Постановка / производство как отдельные шаги

Вы могли бы иметь отдельные отрасли постановки / производства, которые развернуты в соответствующие приложения Heroku. Это имеет преимущество быстрее, и вы можете контролировать, когда выпустить определенные детали. Особенно для приложений, где вы хотите внешний обратную связь перед развертыванием до производства, это отлично работает.

Мы поддерживаем все это на RailsonFire, но в настоящее время мы работаем над новой версией нашего сервиса, что лучше. Мы действительно хорошо интегрируемся с Heroku, чтобы вам не нужно думать об этом (но все же есть возможность сделать это самостоятельно, как вы хотите)

На рынке много инструментов, которые делают это. Snapci. предложения трубопроводы развертывания Что позволило вам выдвинуть каждый коммитарий через тесты, а затем впоследствии в постановку и добычу как разные этапы трубопровода развертывания. У нас также есть полная поддержка параллелизации тестирования, ветвей зданий и вытяжных запросов.

Ну, есть HUDSON, который предоставляет плагин Git, а также поддержку сценариев. Остальное конфигурация, я бы догадался.

Гудзон: http://hudson.dev.java.net.net.

Пытаться Heroku-Bartender. Отказ Писать здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top