Непрерывная интеграция для Ruby on Rails? [закрыто]

149

Я искал решение для непрерывной интеграции для Ruby on Rails, но не слишком доволен результатами. Я пришел из магазина .NET, который использовал CruiseControl.NET и был действительно испорчен его простотой использования и богатым статусом / отчетностью.

В идеале я ищу:

  • Очевидная интеграция Git / SVN и Test :: Unit

  • Интеграция с Rake и / или Capistrano

  • Веб-интерфейс, показывающий статус сборки

  • Уведомление по электронной почте о неудачных сборках.

  • Уведомление на рабочем столе (возможно, через Growl)

  • REST API для статусов сборки

  • Платформа плагинов для запуска других инструментов анализа кода и создания отчетов о результатах в пользовательском интерфейсе

Джим Фиорато
источник
11
Итак, какой у вас выбор сейчас, три года спустя?
Андрей
3
Могу ли я предложить circleci.com ?
Пол Биггар

Ответы:

83

Я просто просмотрел варианты и решил свернуть их с конца 2011 года.

целостность

После предсмертного опыта , который оставил еще связной на сайт с устаревшей информацией и сбитым демо - сайтом, этот проект имеет искру жизни снова. Но документация не продвинулась, и многие шаги в учебнике просто сломаны ; Мне пришлось изменить ссылки на драгоценные камни, создать некоторые вещи вне группы, и тогда я все еще не мог заставить это работать .

Круиз-контроль.рб

Все просто : вы просто скачиваете его, запускаете командную строку, чтобы добавить свой проект (для этого нет пользовательского интерфейса ), и запускаете приложение Rails. Но нет и пользовательского интерфейса для редактирования вашего проекта, и нет никакой реальной интеграции с артефактами сборки, кроме отображения ссылок на них: у вас нет графиков запуска тестов, линий тренда и т. Д. Мне также пришлось настроить routes.rbфайл, чтобы получить работает связывание кода ( resources :projectsлиния должна двигаться ниже всех других маршрутов, отличных от заданных по умолчанию).

TeamCity

Это выглядит потрясающе , но шкала заработной платы, кажется, не в порядке. 3 агента бесплатно, а затем, когда вы зависимы, вам нужно выдать сотни долларов. Personal Builds выглядит великолепно, но не имеет бюджета .

Дженкинс (урожденная Гудзон )

Это приверженец Java, и он загружен тысячами опций , поэтому пользовательский интерфейс сбивает с толку, и создавать свои проекты - непростая задача . Но как только вы настроите его, вы получите множество плагинов, которые могут извлекать практически из любого места, запускать практически все и сообщать о большинстве всего. Установщик OS X указывает на Jenkins, /Users/Shared/Jenkins/Homeно не может создать этот каталог или chownего каталог daemon(который используется по умолчанию, и вам нужно перейти на нового jenkinsпользователя, чтобы вы могли настроить интеграцию с GitHub).

другие

Я действительно не пробовал это, но думал, что упомяну почему:

  • CI Джо хочет владеть репо GitHub больше, чем я хочу, и его создатели даже не используют его; они на Дженкинс
  • Цербер выглядит аккуратно маленьким, но не имеет пользовательского интерфейса и не публикует автоматически артефакты сборки, где их могут видеть другие.
  • BigTuna кажется клоном CruiseControl.rb без (уже минимальной) поддержки сообщества.
  • Бамбук выглядит очень аккуратно, если вы используете JIRA и BitBucket, но мы не используем ни того, ни другого. Это разворачивается, но у нас уже есть те, которые установлены в Capistrano.

Выбор

Мы пошли с Дженкинсом , но мне бы очень хотелось, чтобы одно из облегченных решений сработало.

TALlama
источник
8
Что насчет Трэвиса?
Вануан
3
Я работаю над проектом с закрытым исходным кодом, поэтому, если я не пойму их (плохо сформулированную) документацию, Трэвис на самом деле для нас не вариант (я ни в коем случае не даю им права на запись в наш проект GitHub). Если бы я писал некоторые драгоценные камни, я бы запрыгнул на Трэвиса в одно мгновение, но не для реальных сайтов Rails.
TALlama
2
Для справки, Travis CI скоро выпустит PRO (платную и частную) версию, которая уже находится в бета-версии. Это немного дороговато для небольших проектов - $ 129 и $ 249 в месяц, но стоит взглянуть: travis-ci.com
Джошуа Пинтер
41

Как насчет CruiseControl.rb ?

Та же самая толпа, которая сделала CruiseControl(продумал) и написала в Ruby. Очень прост в использовании Rakeдля интеграции других инструментов и может использовать гем ruby-growl для ваших уведомлений.

craigb
источник
У меня были проблемы с запуском этого на окнах ... не сработало, как рекламируется в видео «это не может быть так просто» для меня.
Гишу
Меня не поразил бы брендинг мыслей - оцените его по достоинству.
Дафидд Рис
этот проект поддерживается только недавно и не выпускает новую версию с 2009 года ... но он работает ..
Скотт Шультесс
3
Круиз-контроль очень примитивен и очень сильно устарел.
Bragboy
1
Учитывая различные события, связанные с безопасностью, вплоть до начала февраля (2013 г.), оставлять CruiseControl.rb в конфигурации по умолчанию (версии Gem и т. Д.) Недобросовестно. Я смог запустить его под Rails 3.0.20, но 3.2.11+, очевидно, потребует значительно больше работы. На данный момент я очень открыт для альтернатив, список требований очень похож на список требований Джима Фиорато.
Джефф Дики
27

Вы также можете рассмотреть Хадсон . Он разработан для использования с проектами Java, хотя существует большой выбор плагинов, включая поддержку Ruby и Rake. Он имеет очень полезный веб-интерфейс и поддерживает уведомления по электронной почте, а также многие другие (такие как твиттер или лампы с гигантским медведем).

Сообщество также очень активно, и было несколько статей о подключении Hudson к Selenium, которые могут быть полезны для тестирования приложений Rails на стороне браузера.

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

Я переключился с CruiseControl.net на Team City и был совершенно шокирован этим улучшением. Я неравнодушен к Хадсону, хотя из-за его схожего набора функций и очень активного сообщества.

юлианский
источник
2
+1 за ТС. Передайте лучший CI, который я когда-либо видел
Мэтт Бриггс
4
Имейте в виду, что у Хадсона есть какие-то политические проблемы из-за того, что мы назовем это творческими разногласиями с Oracle. Большая часть разработчиков, кажется, движется с форком, который будет называться Jenkins; Oracle имеет персонал и будет продолжать поддерживать и развивать Хадсон.
Дондо
4
Хороший вопрос, дондо. Для тех, кто заинтересован в отслеживании дальнейшего развития Хадсон, вы можете проверить Дженкинс на jenkins-ci.org
Джулиан
И вот сравнение деятельности Дженкинса против Хадсона: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Вануан
13

Circle - это расширенный CI-сервис для Rails (и других веб-приложений). Из вашего списка он поддерживает следующее:

  • Интеграция Git и Test :: Unit ( также интеграции RSpec, Cucumber, Jasmine, Konacha и поддержка произвольных дополнительных команд тестирования )
  • Интеграция с Rake и / или Capistrano ( использует Rake для запуска команд и настройки БД, поддерживает непрерывное развертывание с использованием Capistrano или Heroku, или чего-либо еще )
  • Веб-интерфейс, показывающий статус сборки
  • Уведомление по электронной почте о неудачных сборках.
  • Уведомление на рабочем столе ( через CCMenu / CCTray )
  • REST API для статусов сборки
  • Платформа плагинов для запуска других инструментов анализа кода и создания отчетов о результатах в пользовательском интерфейсе ( мы можем запускать произвольные команды и поддерживать, включая их статус как часть сборки )

Джоэл и я провели некоторое время, болтая об этом на подкасте Stackoverflow - проверьте это !


(править) Отказ от ответственности: Пол Биггар основал круг, как он заявляет в своем профиле Stackoverflow

Пол Биггар
источник
8

Semaphore - это новое CI-приложение для Ruby и Rails. Он интегрируется с GitHub, не требует настройки и имеет простой пользовательский интерфейс.

Marko
источник
Мы используем семафор как часть набора CI, и он работает фантастически. Вы можете увидеть, как это интегрировано с другими программами, такими как Jasmine и HipChat, в одном из наших постов в блоге . В описании также упоминается использование Capistrano в качестве инструмента развертывания. Мы использовали его в прошлом, но это было слишком медленно для нас, поэтому мы переключились на Мину .
denis.arunovic
8

Обновлено февраль-2015

Codeship

На Drone.io не хватало разработки, поэтому я переключился на Codeship, и мне это очень нравится. Он активно развивается и совершенствуется, имеет отличный дизайн и очень быстрый. Кроме того, для нижнего уровня он фактически бесплатный (до 100 сборок в месяц), поэтому он оказался дешевле, чем Drone.io.

Оригинальный ответ

Drone.io

Я просто настраивал наше основное приложение Ruby on Rails с помощью http://drone.io/ . Был кусок пирога, и у него был отличный интерфейс. Я бы сказал, стоит проверить, если вы ищете простое, размещенное решение .

Джошуа Пинтер
источник
7

Проверьте Tddium . Tddium поддерживает непрерывную интеграцию, развертывание и интерактивное тестирование приложений Ruby. Он предоставляет управляемую среду с поддержкой Selenium, Headless Webkit и Solr. Он содержит живые экземпляры Postgres, MySQL, Mongo и Redis. И он автоматически распараллеливает большие тестовые наборы.

Джей Мурти
источник
5
Джей, возможно, ты захочешь показать свою связь с лабораториями tddium и solano. Согласно FAQ : «Вы должны раскрывать свою принадлежность в своих ответах»
tgf
7

Travis CI стал популярным в мире рубинов: http://travis-ci.org/

Vanuan
источник
Travis CI хорош для проектов с открытым исходным кодом, но не совсем для проектов с закрытым исходным кодом. Дженкинс может покрыть оба случая :-)
Габор Гарами
1
Но не с открытым исходным кодом? github.com/travis-ci/travis-ci Разве вы не можете просто настроить свой личный экземпляр travis, как вы делаете с Дженкинсом?
Вануан
Вы, вероятно, могли бы, но в Readme они рекомендуют против и упоминают, что это еще не очень подходит для частного хостинга.
Эндрю
Это нормально сейчас для закрытых проектов
aehlke
6

Как и многие люди, я был большим поклонником cruisecontrol.rb, но недавно переключил свои проекты на Integrity .

Легкий и простой в настройке (как cc.rb), но с более приятным интерфейсом.

csexton
источник
5
Я просто пытался настроить целостность, и это беспорядок.
Лоуренс
5

BigTuna - написан на Ruby, использует Rails и использует себя в качестве CI.

OMA
источник
3
Имейте в виду, что ссылка appelier.com для BigTuna является недействительной ссылкой на просроченный домен. Проект теперь можно найти на Github .
Джефф Дики
5

Вы можете попробовать Codeship и посмотреть, работает ли он для вас (я один из основателей)

Непрерывная интеграция и развертывание на основе облака (со специальной поддержкой Heroku)

Первые четыре из ваших пунктов уже реализованы и отлично работают для ряда компаний

  • Очевидная интеграция Git / SVN и Test :: Unit
  • Интеграция с Rake и / или Capistrano
  • Веб-интерфейс, показывающий статус сборки
  • Уведомление по электронной почте о неудачных сборках.

Мы также работаем над этими функциями:

  • Уведомление на рабочем столе (возможно, через Growl)
  • REST API для статусов сборки
  • Платформа плагинов для запуска других инструментов анализа кода и создания отчетов о результатах в пользовательском интерфейсе
Флориан Мотлик
источник
3

Сделай сам. Напишите bash-скрипт для запуска тестов, а затем, если тесты пройдут, запустите процедуру развертывания. Нужны уведомления? Снимайте с себя текстовое сообщение об успехе / неудаче. Нужен планировщик? Cronjob. Это $ 0 / мес., И вы будете иметь представление о том, что вы делаете. Я не понимаю, как оплата кому-то 40 долларов в месяц поможет мне сделать это более эффективным способом.

Рассмотрим, к примеру: мое развертывание не выполняется из-за неправильно настроенного конвейера ресурсов (ресурсы не прекомпилируются). Это не будет отражено в модульных, функциональных, интеграционных, регрессионных или любых других тестах. Эта ошибка не будет обнаружена CI. Время, которое я потратил бы на написание сценария bash, вероятно, будет меньше, чем количество времени, которое я потратил бы на настройку среды CI, и я сэкономлю 40 долларов в месяц.

Джуууууст, бросая мои две копейки в обсуждение; )

Виктор Пудеев
источник
1

Run Code Run может быть то, что вам нужно.

Изменить: ссылка удалена, поскольку она больше не ссылается на бывший сайт Run Code Run.

Тодд Стаут
источник
1
Теперь собирается быть закрытым. :(
Эндрю Гримм
1

И затем, есть CI Джо :

Это как старый ржавый пикап: он может быть вонючим и грубым, но он выполняет свою работу.

Мы используем его ежедневно.

Хакан Энсари
источник
1

Мне нравится только CI Joe, у меня были проблемы со всем остальным, CI Joe - это абсолютный минимум для выполнения работы, супер Agile и надежный. Источник в Гудзоне ужасен, и пользовательский интерфейс меня не привлекает.

Брент Грифф
источник
0

Я только что опубликовал очень простое приложение непрерывной интеграции для RubyOnRails + SVN / GIT. Может быть, вы должны попробовать это:

http://github.com/felipegiotto/Inotegration/tree/master

Я взял некоторые идеи инструментов измерения и тестирования и, попробовав некоторые инструменты CI и не любя никого из них, я решил создать свой собственный, без необходимости создавать большие файлы XML или любую другую конфигурацию. Просто так, как был создан Rails.

Если вам нравится, пожалуйста, отправьте мне свой отзыв ..

С уважением,

Фелипе Джотто.


источник
0

Запуск CI после каждого коммита кажется довольно дорогостоящим, если вы согласны с философией «часто совершать». Как насчет запуска простого cronjob каждые несколько часов и отправки результатов по электронной почте в список рассылки разработчиков?

JasonOng
источник
Или как насчет того, чтобы просто настроить сервер CI, чтобы он запрашивал изменения только один раз в час? Большинство приложений CI поддерживают этот параметр.
Джеринесмит
2
С мерзавцем вы можете делать коммиты часто, но редко пушить.
Вануан
0

Я просто настроил Хадсон / Дженкинс для этого. Gem ci_reporter может помочь в форматировании вывода JUnit, что и ожидалось от Hudson, и у Hudson есть плагин Rails, так что я могу видеть покрытие rcov, отчеты о тестировании, статистику по rails и многое другое.

Габор Гарами
источник
Не могли бы вы сравнить ваши настройки с другими альтернативами?
Андрей
Поскольку я использую Rails 2.3.x для своих производственных проектов, в настоящее время нет, потому что для большинства других альтернатив требуется Rails 3.x. Однако, когда смогу, я проверю это и опубликую свой опыт.
Габор Гарами
Я тоже попробовал Jenkins с Rails 3.x, и он работает очень хорошо. Я также попробовал некоторые другие решения (например, IntegrityApp), но так как я использую Jenkins для тестирования других проектов, это стало окончательным решением для него. Это не означает, что IntegrityApp или другие вещи плохие, IntegrityApp - очень хорошие вещи, однако мне нравится Дженкинс немного больше.
Габор Гарами
0

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

Prasanna
источник