Я работаю над своим первым приложением rails и изо всех сил пытаюсь найти эффективное и чистое решение для автоматизированных проверок и развертываний.
До сих пор я смотрел как CruiseControl.rb (знакомый с CruiseControl.NET), так и Capistrano . К сожалению, если я что-то упускаю, каждый из них делает только половину того, что я хочу (каждый делает свою половину).
За то, что я видел до сих пор:
CruiseControl
- Сильные стороны
- Автоматизированная сборка при извлечении из хранилища при фиксации
- Также запускает юнит / функциональные тесты и отчитывается
- Слабые стороны
- Нет встроенных механизмов развертывания (лучшее, что я могу найти, это написание собственных сценариев bash)
Capistrano
- Сильные стороны
- Слабые стороны
- Должен быть запущен командой (т. Е. Не выполняет автоматические проверки при коммите)
Я нашел способы, которыми я могу связать их вместе - например, CruiseControl пропингует хранилище на предмет изменений, делает проверку после фиксации, запускает тесты и т. Д., А затем по окончании звонит Capistrano, чтобы выполнить развертывание (хотя Capistrano также собирается выполнить проверку хранилища).
Обычно, когда все сказано и сделано, я бы хотел создать три проекта:
- Dev: Checkout / Deployment полностью не касаются. Когда кто-то фиксирует файл, что-то проверяет его, запускает тесты, развертывает изменения и сообщает
- Стадия: проверка / развертывание требует нажатия кнопки
- Prod: Нажатие кнопки выполняет помеченную проверку или перемещает файлы со стадии
У меня это работает с комбинацией CruiseControl.NET и MSBuild в мире .NET, и это было довольно просто. Я предполагаю, что это также распространенный шаблон в мире развертывания ruby, но я легко могу ошибиться.