Автоматизированное развертывание в Rails - PullRequest
1 голос
/ 21 июля 2009

Я работаю над своим первым приложением rails и изо всех сил пытаюсь найти эффективное и чистое решение для автоматизированных проверок и развертываний.

До сих пор я смотрел как CruiseControl.rb (знакомый с CruiseControl.NET), так и Capistrano . К сожалению, если я что-то упускаю, каждый из них делает только половину того, что я хочу (каждый делает свою половину).

За то, что я видел до сих пор:

CruiseControl

  • Сильные стороны
    • Автоматизированная сборка при извлечении из хранилища при фиксации
    • Также запускает юнит / функциональные тесты и отчитывается
  • Слабые стороны
    • Нет встроенных механизмов развертывания (лучшее, что я могу найти, это написание собственных сценариев bash)

Capistrano

  • Сильные стороны
    • Создан для развертывания
  • Слабые стороны
    • Должен быть запущен командой (т. Е. Не выполняет автоматические проверки при коммите)

Я нашел способы, которыми я могу связать их вместе - например, CruiseControl пропингует хранилище на предмет изменений, делает проверку после фиксации, запускает тесты и т. Д., А затем по окончании звонит Capistrano, чтобы выполнить развертывание (хотя Capistrano также собирается выполнить проверку хранилища).

Обычно, когда все сказано и сделано, я бы хотел создать три проекта:

  • Dev: Checkout / Deployment полностью не касаются. Когда кто-то фиксирует файл, что-то проверяет его, запускает тесты, развертывает изменения и сообщает
  • Стадия: проверка / развертывание требует нажатия кнопки
  • Prod: Нажатие кнопки выполняет помеченную проверку или перемещает файлы со стадии

У меня это работает с комбинацией CruiseControl.NET и MSBuild в мире .NET, и это было довольно просто. Я предполагаю, что это также распространенный шаблон в мире развертывания ruby, но я легко могу ошибиться.

Ответы [ 3 ]

3 голосов
/ 22 июля 2009

Я бы попробовал Хадсон (бесплатно и с открытым исходным кодом). Я начал использовать CruiseControl, но мне надоело переучивать конфигурацию XML каждый раз, когда мне нужно было изменить настройку или добавить проект. Тогда я начал использовать Hudson и никогда не оглядывался назад. Hudson более или менее полностью настраивается через Интернет. Изначально это был инструмент непрерывной интеграции для Java, но с плагинами для других стеков разработки, таких как .NET и Ruby on Rails. Есть плагин Rake. Если это не сработает, вы можете настроить его на выполнение любой произвольной командной строки после запуска ваших сборок / тестов Rake.

Я должен также добавить, что очень легко заставить Хадсона работать:

java -jar hudson.war

Или вы можете бросить войну в любом контейнере сервлета.

1 голос
/ 22 июля 2009

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

Просто создайте простое задание capistrano, которое тестирует и сообщает вам. Вы можете использовать команду «Выполнить», чтобы сделать все, что вы хотите.

Если вы не хотите использовать какой-либо инструмент командной строки, вебистрано было 2 года назад.

Чтобы можно было использовать что-то вроде http://github.com/benschwarz/gitnotify/tree/master для запуска развертывания сборки, если вы используете git в качестве хранилища.

0 голосов
/ 09 января 2010

По крайней мере для автоматизированных развертываний разработки, проверьте скрипты ловушек, доступные в git:

http://git -scm.com / Docs / githooks

Я думаю, вы захотите сосредоточиться на хуковом скрипте post-receive , так как он запускается после отправки на удаленный сервер.

Также стоит проверить git-deploy Мислава на github. Делает управление развертыванием довольно чистым.

http://github.com/mislav/git-deploy

...