Правильная непрерывная интеграция и постоянное развертывание с Git и Heroku - PullRequest
12 голосов
/ 27 июня 2010

Я разрабатываю сайт ruby ​​on rails с использованием heroku и git.

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

CODE> CHECK-IN> AUTO TEST> AUTO DEPLOY

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

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

Ответы [ 6 ]

5 голосов
/ 08 ноября 2012

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

2 голосов
/ 29 ноября 2012

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

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

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

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

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

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

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

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

1 голос
/ 25 февраля 2015

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

1 голос
/ 29 августа 2010

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

Состояния целостности:

Heroku - это самый простой и быстрый способ развертывания Integrity.

Тем не менее:

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

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

.

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

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

0 голосов
/ 20 марта 2011

Попробуйте Heroku-Bartender .Описание здесь .

0 голосов
/ 27 июня 2010

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

Хадсон: http://hudson.dev.java.net

...