Непрерывная интеграция для Ruby on Rails?
Я искал решение для непрерывной интеграции для Ruby on Rails, но не был доволен результатами. Я пришел из магазина .NET, который использовал CruiseControl.NET и был действительно испорчен с его простотой использования и богатым статусом/отчетами.
В идеале ищу:
-
Очевидные Git/SVN и Test:: Unit
интеграция
-
Интеграция с Rake и/или
Capistrano
-
Веб-интерфейс, показывающий статус
сборки
-
Уведомление по электронной почте о неудачных сборках.
-
Уведомление рабочего стола (потенциально
через Growl)
-
API REST для статусов сборки
-
Плагиновая среда для работы с другими инструментами анализа кода и отчетами в пользовательском интерфейсе
Ответы
Ответ 1
Я просто воспользовался вариантами здесь и подумал, что скрою их с конца 2011 года.
После опыта почти смерти, который оставил связанный с веб-сайт с устаревшей информацией и сбил демонстрационный сайт, этот проект снова искра жизни. Но документация не продвинулась, и много-много шагов в учебнике просто сломаны; Мне пришлось менять ссылки на драгоценные камни, создавать некоторые вещи вне группы, а затем я все еще не мог заставить его работать.
Dead simple: вы просто загрузите его, запустите командную строку, чтобы добавить свой проект (для этого есть без интерфейса пользователя) и запустите приложение Rails. Но нет никакого пользовательского интерфейса для редактирования вашего проекта, и там нет реальной интеграции с артефактами сборки, кроме отображения ссылок на них: вы не получаете графиков тестов, линий тренда и т.д. Я также имел отрегулировать файл routes.rb
, чтобы заставить работать ссылка на код (строка resources :projects
должна перемещаться ниже всех других маршрутов, отличных от по умолчанию).
Этот выглядит потрясающе, но шкала зарплаты кажется удачной. 3 агента бесплатно, а затем, когда вы зависите, вам нужно вывести сотни долларов. Персональные сборки отлично смотрится, но не имеют бюджета.
Это Java stalwart и загружен с тысячей опций, поэтому пользовательский интерфейс запутывает, и он выполняет работу по настройке ваших проектов. Но как только вы его настроите, вы получите множество плагинов, которые могут вытаскивать из любого места, запускать большинство всего и сообщать обо всем. Установщик OS X указывает Jenkins на /Users/Shared/Jenkins/Home
, но не создает этот каталог или chown
его на daemon
(который используется по умолчанию, и вы должны перейти к новому пользователю jenkins
, чтобы вы могли настроить интеграцию GitHub).
Другие
Я действительно не пробовал их, но подумал, что я бы сказал, почему:
- CI Joe хочет владеть репо GitHub больше, чем я хочу, и его создатели даже не используют его; они на Дженкинса.
- Cerberus кажется довольно маленьким, но не имеет пользовательского интерфейса и не публикует автоматически артефакты сборки, где другие могут их видеть.
- BigTuna кажется клоном CruiseControl.rb без поддержки (уже минимального) сообщества.
- Bamboo выглядит очень аккуратно, если вы используете JIRA и BitBucket, но мы не используем их. Он развертывается, но у нас уже есть те, что настроены в Capistrano.
Выбор
Мы пошли с Jenkins, но я действительно желаю, чтобы один из более легких весов был разработан.
Ответ 2
Как насчет CruiseControl.rb?
Та же толпа, что и CruiseControl
(thoughtworks) и написана в Ruby
. Очень простой в использовании Rake
для интеграции ваших других инструментов и вы можете использовать рубиновый рычаг для ваших уведомлений.
Ответ 3
Вы также можете рассмотреть Hudson. Он предназначен для использования с проектами Java, хотя имеется большой выбор доступных плагинов, включая поддержку Ruby и Rake. Он имеет очень полезный веб-интерфейс и поддерживает уведомления по электронной почте, а также многие другие (например, твиттер или гигантские медвежьи лампы).
Сообщество также очень активно и несколько статей о подключении Hudson with Selenium, которые могут оказаться полезными для тестирования приложений Rails на стороне браузера.
Еще один взгляд на Team City, который является бесплатным для небольших проектов и команд (в том числе коммерческих). Мне очень нравится Team City и раньше использовал его для других проектов, но в настоящее время мы используем Mercurial для управления исходным кодом, а поддержка Team City была слишком бета-версией, когда мы рассматривали ее.
Я переключился с CruiseControl.net на Team City и был абсолютно потрясен улучшением. Я частично отношусь к Хадсону, хотя из-за его сходного набора функций и очень активного сообщества.
Ответ 4
Circle является расширенной службой CI для Rails (и других веб-приложений). Из вашего списка он поддерживает следующее:
- Git и Test:: Unit (также RSpec, Cucumber, Jasmine, Konacha и поддерживает любые дополнительные команды тестирования)
- Интеграция с Rake и/или Capistrano (использует Rake для запуска команд и настройки баз данных, поддержки непрерывного развертывания с использованием Capistrano или Heroku или что-то действительно)
- Веб-интерфейс, показывающий статус сборки
- Уведомление по электронной почте о неудавшихся сборках.
- Уведомление о рабочем месте (через CCMenu/CCTray)
- API REST для статусов сборки
- Плагин для работы с другими инструментами анализа кода и отчетами в пользовательском интерфейсе (мы можем запускать произвольные команды и поддержку, включая их статус как часть сборки)
Мы с Джоэлом проводили беседу об этом в подкасте Stackoverflow - проверить его!
(править) Отказ от ответственности: Пол Биггар основал Circle, поскольку он заявляет в своем профиле Stackoverflow
Ответ 5
Semaphore - это новое размещенное приложение CI для приложений Ruby и Rails. Он интегрируется с GitHub, не требует настройки и имеет простой интерфейс.
Ответ 6
Отъезд Tddium. Tddium поддерживает непрерывную интеграцию, развертывание и интерактивное тестирование приложений Ruby. Он обеспечивает управляемую среду с поддержкой Selenium, Headless Webkit и Solr. В нем размещаются живые сообщения Postgres, MySQL, Mongo и Redis. И он автоматически распараллеливает большие тестовые пакеты.
Ответ 7
Обновлено фев-2015
Не было развития на Drone.io, поэтому я переключился на Codeship, и я полностью наслаждаюсь этим. Он активно развивается и совершенствуется, имеет отличный дизайн и очень быстрый. Кроме того, для нижнего уровня он фактически свободен (до 100 сборок в месяц), поэтому он оказался дешевле, чем Drone.io.
Оригинальный ответ
Я просто установил наше основное приложение Ruby on Rails с http://drone.io/. Был кусок пирога, и он получил отличный интерфейс. Я бы сказал, стоит проверить, ищете ли вы простую, размещенную версию.
Ответ 8
cruisecontrol.rb будет идеальным совпадением.
http://cruisecontrolrb.thoughtworks.com/
Ответ 9
Как и многие люди, я был большим поклонником cruisecontrol.rb, но недавно переключил свои проекты на Integrity.
Легкий и простой в установке (как и cc.rb), но с более удобным интерфейсом.
Ответ 10
Travis CI стал популярным в мире рубинов: http://travis-ci.org/
Ответ 11
BigTuna - написанный в Ruby, использует Rails и использует себя как свой CI.
Ответ 12
Вы можете дать Codeship спину и посмотреть, работает ли она для вас (я один из основателей)
Непрерывная интеграция и развертывание на основе облачных вычислений (со специальной поддержкой Heroku)
Первые четыре ваших элемента уже реализованы и работают отлично для ряда компаний.
- Очевидная интеграция Git/SVN и Test:: Unit
- Интеграция с Rake и/или Capistrano
- Веб-интерфейс, показывающий статус сборки
- Уведомление по электронной почте о неудачных сборках.
Мы также работаем над этими функциями:
- Уведомление рабочего стола (возможно через Growl)
- API REST для статусов сборки
- Плагиновая среда для запуска других инструментов анализа кода и отчетов в пользовательском интерфейсе
Ответ 13
Целостность, кажется, отличное решение. Развертывание на героку - легкий ветерок:
http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity
http://integrityapp.com
Ответ 14
Пожалуйста, посмотрите http://teamcitydev.blogspot.com/2008/11/most-advanced-continuous-integration.html
Ответ 15
Здесь никто не упомянул атласский бамбук. Существует хорошая учебная статья о Ruby on Rails CI с использованием Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
Ответ 16
Сделай это сам. Напишите bash script для запуска тестов, а затем выполните процедуру развертывания, если тесты пройдут. Нужны уведомления? Стреляйте в простой текстовый адрес об успехе/неудаче. Нужен планировщик? Cronjob. Это $0/мес., И у вас будет ключ к тому, что вы делаете. Я не понимаю, как заплатить кому-то $40/mo поможет мне сделать это в любом случае более эффективно.
Рассмотрим, например: мое развертывание не работает из-за неправильно сконфигурированного конвейера активов (активы не прекомпилируются). Это не будет улавливаться единичным, функциональным, интеграционным, регрессионным или любым другим тестом. Эта ошибка не будет обнаружена CI. Количество времени, которое я потратил на создание bash script, вероятно, будет меньше времени, которое я потратил бы на настройку среды CI, и я сэкономлю себе $40/mo.
Juuuuuust бросил мои две гроши в обсуждение; )
Ответ 17
Запуск кода запуска
может быть то, что вам нужно.
Изменить:
ссылка удалена, поскольку она больше не относится к первому сайту Run Code Run.
Ответ 18
И затем, CI Joe:
Это похоже на старый ржавый пикап: он может быть вонючим и грубым, но он выполняет свою работу.
Мы используем его ежедневно.
Ответ 19
Мне нравится только CI joe, у меня были проблемы со всем остальным,
CI Joe является абсолютным минимумом, чтобы выполнить работу,
супер Agile и надежный. Источник хадсона ужасен,
и пользовательский интерфейс не обращается ко мне.
Ответ 20
Я только что опубликовал очень простое приложение непрерывной интеграции для RubyOnRails + SVN/ GIT. Возможно, вам стоит попробовать:
http://github.com/felipegiotto/Inotegration/tree/master
Я взял некоторые идеи для инструментов измерения и тестирования, и, попробовав некоторые инструменты CI и не любя никого из них, я решил создать свой собственный, без необходимости создавать большие XML файлы или любую другую конфигурацию. Именно так был создан Rails.
Если вам нравится, пожалуйста, пришлите мне обратную связь.
С уважением,
Фелипе Джотто.
Ответ 21
Выполнение CI после каждого коммита кажется довольно дорогостоящим, если вы подписываетесь на философию "совершать часто". Как пропустить простой cronjob каждые несколько часов и отправить результаты поиска в список рассылки dev?
Ответ 22
Я просто настроил для этого Хадсона/Дженкинса. Драгоценный камень ci_reporter может помочь форматировать вывод JUnit, что ожидалось от Hudson, а у Hudson есть плагин Rails, поэтому я могу видеть покрытие rcov, отчеты об испытаниях, статистику рельсов и даже больше.
Ответ 23
Вы также должны взглянуть на CloudMunch. Это обеспечивает платформу polyglot, позволяющую вам иметь разные языки как часть вашей кодовой базы с богатым набором метаданных сборки.