Kontinuierliche Integration für Ruby on Rails? [geschlossen]


149

Ich habe nach einer Continuous Integration-Lösung für Ruby on Rails gesucht, war aber mit den Ergebnissen nicht allzu zufrieden. Ich kam aus einem .NET-Shop, der CruiseControl.NET verwendete, und war mit seiner Benutzerfreundlichkeit und dem umfangreichen Status / Berichterstellung wirklich verwöhnt.

Idealerweise suche ich:

  • Die offensichtliche Integration von Git / SVN und Test :: Unit

  • Integration mit Rake und / oder Capistrano

  • Eine Webschnittstelle, die den Status des Builds anzeigt

  • E-Mail-Benachrichtigung über fehlgeschlagene Builds.

  • Desktop-Benachrichtigung (möglicherweise über Growl)

  • REST-API für Build-Status

  • Plugin-Framework zum Ausführen anderer Code-Analyse-Tools und zum Berichten von Ergebnissen in der Benutzeroberfläche


11
Was ist Ihre Wahl jetzt, drei Jahre später?
Andrei

3
Kann ich circleci.com vorschlagen ?
Paul Biggar

Antworten:


83

Ich habe gerade die Optionen hier durchgesehen und dachte, ich würde sie ab Ende 2011 zusammenfassen.

Integrität

Nach einer Nahtoderfahrung , bei der die noch verlinkte Website mit veralteten Informationen verlassen und die Demo-Website heruntergefahren wurde, hat dieses Projekt wieder einen Funken Leben. Aber die Dokumentation ist nicht weitergegangen, und viele, viele Schritte im Tutorial sind einfach kaputt . Ich musste Verweise auf Edelsteine ​​ändern, einige Dinge aus der Band heraus bauen, und dann konnte ich es immer noch nicht zum Laufen bringen .

Tempomat.rb

Ganz einfach : Laden Sie es einfach herunter, führen Sie eine Befehlszeile aus, um Ihr Projekt hinzuzufügen (es gibt keine Benutzeroberfläche dafür), und führen Sie die Rails-App aus. Aber es gibt auch keine Benutzeroberfläche zum Bearbeiten Ihres Projekts und es gibt keine echte Integration mit Build-Artefakten, abgesehen von der Anzeige von Links zu diesen: Sie erhalten keine Diagramme von Testläufen, keine Trendlinien usw. Ich musste auch die routes.rbDatei anpassen, um die zu erhalten Codeverknüpfung funktioniert (die resources :projectsLinie muss sich unter alle anderen nicht standardmäßigen Routen bewegen).

TeamCity

Das sieht fantastisch aus , aber die Gehaltsskala scheint aus dem Ruder gelaufen zu sein. 3 Agenten frei und wenn Sie abhängig sind, müssen Sie Hunderte von Dollar ausgeben. Personal Builds sieht gut aus, hat aber nicht das Budget .

Jenkins (geb. Hudson )

Dies ist ein stabiles Java-System , das mit tausend Optionen ausgestattet ist. Die Benutzeroberfläche ist also verwirrend und das Einrichten Ihrer Projekte ist mühsam . Aber sobald Sie es eingerichtet haben, erhalten Sie eine ganze Reihe von Plugins , die von fast überall abgerufen werden können, fast alles ausführen und fast alles melden können. Das OS X Installer verweist Jenkins /Users/Shared/Jenkins/Homeaber nicht das Verzeichnis erstellen oder chownsie daemon(die als Standard verwendet, und Sie sollten auf einen neuen ändern jenkinsBenutzer , so dass Sie GitHub Integration einrichten können).

Andere

Ich habe diese nicht wirklich ausprobiert, dachte aber, ich würde erwähnen, warum:

  • CI Joe möchte das GitHub-Repo mehr besitzen als ich, und seine Entwickler verwenden es nicht einmal. Sie sind auf Jenkins.
  • Cerberus wirkt ordentlich klein, hat aber keine Benutzeroberfläche und veröffentlicht Build-Artefakte nicht automatisch dort, wo andere sie sehen können.
  • BigTuna scheint ein CruiseControl.rb-Klon ohne die (bereits minimale) Community-Unterstützung zu sein.
  • Bambus sieht wirklich gut aus, wenn Sie JIRA und BitBucket verwenden, aber wir verwenden keine. Es wird zwar bereitgestellt, aber wir haben diese bereits in Capistrano eingerichtet.

Die Wahl

Wir sind mit Jenkins gegangen , aber ich wünschte wirklich, eine der leichteren Lösungen hätte funktioniert.


8
Was ist mit Travis?
Vanuan

3
Ich arbeite an einem Closed-Source-Projekt. Wenn ich die (schlecht formulierte) Dokumentation nicht falsch verstehe, ist Travis für uns keine Option (ich erteile ihnen auf keinen Fall Schreibzugriff auf unser GitHub-Projekt). Wenn ich ein paar Edelsteine ​​schreiben würde, würde ich sofort auf Travis springen, aber nicht für echte Rails-Sites.
TALlama

2
Travis CI wird in Kürze eine PRO-Version (Paid and Private) veröffentlichen, die sich bereits in der Beta befindet. Es ist ein wenig teuer für kleine Projekte bei 129 $ und 249 $ pro Monat, aber es lohnt sich einen Blick darauf zu werfen: travis-ci.com
Joshua Pinter

41

Wie wäre es mit CruiseControl.rb ?

CruiseControlDieselbe Menge, die es getan hat (Gedankenarbeit) und geschrieben hat Ruby. Sehr einfach zu verwenden, Rakeum Ihre anderen Tools zu integrieren, und kann das Rubin-Knurren- Juwel für Ihre Benachrichtigungen verwenden.


Ich hatte Probleme, dies unter Windows zum Laufen zu bringen. Es funktionierte nicht wie im Video "Es kann nicht so einfach sein" auf der Website für mich angekündigt.
Gishu

Das Branding von Thoughtworks würde mich nicht beeinflussen - beurteilen Sie es nach seinen Vorzügen.
Dafydd Rees

Dieses Projekt wurde erst kürzlich gepflegt und hat seit 2009 keine neue Version veröffentlicht ... aber es funktioniert ..
Scott Schulthess

3
Cruisecontrol ist sehr primitiv und sehr, sehr veraltet.
Bragboy

1
Angesichts der verschiedenen sicherheitsrelevanten Ereignisse bis Anfang Februar (2013) ist es nicht nachvollziehbar, CruiseControl.rb in seiner Standardkonfiguration (Gem-Versionen usw.) zu belassen. Ich habe es unter Rails 3.0.20 zum Laufen gebracht, aber 3.2.11+ wird anscheinend deutlich mehr Arbeit kosten. An diesem Punkt bin ich sehr offen für Alternativen mit einer Anforderungsliste, die der von Jim Fiorato sehr ähnlich ist.
Jeff Dickey

27

Vielleicht möchten Sie auch Hudson in Betracht ziehen . Es wurde für die Verwendung mit Java-Projekten entwickelt, obwohl eine große Auswahl an Plug-Ins verfügbar ist, einschließlich der Unterstützung von Ruby und Rake. Es hat eine sehr nützliche Weboberfläche und unterstützt E-Mail-Benachrichtigungen sowie viele andere (wie Twitter oder riesige Bärenlampen).

Die Community ist auch sehr aktiv und es gab mehrere Artikel über das Anschließen von Hudson an Selen, die Sie möglicherweise beim Testen von Rails-Anwendungen auf der Browserseite unterstützen.

Ein weiterer Blick ist Team City, das für kleine Projekte und Teams (einschließlich Werbung) kostenlos ist. Ich mag Team City sehr und habe es bereits für andere Projekte verwendet, aber derzeit verwenden wir Mercurial für die Quellcodeverwaltung, und die Unterstützung von Team City war etwas zu Beta, als wir darüber nachdachten.

Ich wechselte von CruiseControl.net zu Team City und war absolut schockiert über die Verbesserung. Ich bin jedoch ein Teil von Hudson, weil es ähnliche Funktionen und eine sehr aktive Community bietet.


2
+1 für TC. Zweifellos das beste CI, das ich je gesehen habe
Matt Briggs

4
Seien Sie gewarnt, dass es für Hudson einige politische Probleme gibt, weil wir es mit Oracle als kreative Unterschiede bezeichnen. Der Großteil der Entwickler scheint sich mit der Gabel zu bewegen, die Jenkins heißt. Oracle hat Mitarbeiter und wird Hudson weiterhin unterstützen und weiterentwickeln.
Dondo

4
Guter Punkt dondo. Für diejenigen, die Hudsons weitere Entwicklung verfolgen möchten
Julian

Und hier ist ein Vergleich der Entwicklungsaktivitäten von Jenkins und Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan

13

Circle ist ein erweiterter CI-Dienst für Rails (und andere Web-Apps). Aus Ihrer Liste wird Folgendes unterstützt:

  • Git- und Test :: Unit-Integration ( auch RSpec-, Cucumber-, Jasmine-, Konacha-Integrationen und Unterstützung beliebiger zusätzlicher Testbefehle )
  • Integration mit Rake und / oder Capistrano ( verwendet Rake, um Befehle auszuführen und DBs einzurichten, die kontinuierliche Bereitstellung mit Capistrano oder Heroku zu unterstützen oder alles andere )
  • Eine Webschnittstelle, die den Status des Builds anzeigt
  • E-Mail-Benachrichtigung über fehlgeschlagene Builds.
  • Desktop-Benachrichtigung ( über CCMenu / CCTray )
  • REST-API für Build-Status
  • Plugin-Framework zum Ausführen anderer Code-Analyse-Tools und zum Melden von Ergebnissen in der Benutzeroberfläche ( wir können beliebige Befehle ausführen und deren Status als Teil des Builds unterstützen )

Joel und ich unterhielten uns eine Weile im Stackoverflow-Podcast darüber - probieren Sie es aus !


(Bearbeiten) Haftungsausschluss: Paul Biggar gründete Circle, wie er in seinem Stackoverflow-Profil angibt


8

Semaphore ist eine neue gehostete CI-App für Ruby- und Rails-Apps. Es lässt sich in GitHub integrieren, erfordert kein Setup und verfügt über eine einfache Benutzeroberfläche.


Wir verwenden Semaphore als Teil der CI-Suite und es funktioniert fantastisch. In einem unserer Blog-Beiträge können Sie sehen, wie es in andere Software wie Jasmine und HipChat integriert ist . Die Operation erwähnte auch die Verwendung von Capistrano als Bereitstellungstool. Wir haben es in der Vergangenheit benutzt, aber es war zu langsam für uns, also sind wir zu Mina gewechselt .
denis.arunovic

8

Aktualisiert im Februar 2015

Codeship

Es gab einen Mangel an Entwicklung auf Drone.io, also bin ich zu Codeship gewechselt und es macht mir großen Spaß. Es ist aktiv entwickelt und verbessert, hat ein tolles Design und ist sehr schnell. Außerdem ist es für die unterste Stufe kostenlos (bis zu 100 Builds pro Monat), sodass es billiger als Drone.io ist.

Ursprüngliche Antwort

Drone.io

Ich habe gerade unsere Hauptanwendung Ruby on Rails mit http://drone.io/ eingerichtet . War ein Kinderspiel und es hat eine tolle Oberfläche. Ich würde sagen, es lohnt sich zu prüfen, ob Sie nach einer einfachen, gehosteten Lösung suchen .


7

Schauen Sie sich Tddium an . Tddium unterstützt die kontinuierliche Integration, Bereitstellung und interaktive Prüfung von Ruby-Anwendungen. Es bietet eine verwaltete Umgebung mit Unterstützung für Selenium, Headless Webkit und Solr. Es hostet Live-Instanzen von Postgres, MySQL, Mongo und Redis. Und große Testsuiten werden automatisch parallelisiert.


5
Jay, vielleicht möchten Sie Ihre Assoziation mit tddium- und solano-Labors offenlegen. Per FAQ : "Sie müssen Ihre Zugehörigkeit in Ihren Antworten offenlegen"
tgf

7

Travis CI ist in der Rubinwelt populär geworden: http://travis-ci.org/


Travis CI ist gut für Open Source-Projekte, aber nicht wirklich für Closed Source-Projekte. Jenkins kann beide Fälle abdecken :-)
Gabor Garami

1
Aber ist nicht Open Source? github.com/travis-ci/travis-ci Können Sie nicht einfach Ihre private Travis-Instanz einrichten, wie Sie es mit Jenkins tun?
Vanuan

Sie könnten es wahrscheinlich, aber in der Readme empfehlen sie dagegen und erwähnen, dass es noch nicht gut für privates Hosting geeignet ist.
Andrew

Es ist jetzt in Ordnung für geschlossene Projekte
aehlke


6

Wie viele andere war ich ein großer Fan von cruisecontrol.rb, habe aber kürzlich meine Projekte auf Integrity umgestellt .

Leicht und einfach einzurichten (ähnlich wie cc.rb), aber mit einer schöneren Oberfläche.


5
Ich habe gerade versucht, Integrity einzurichten, und es ist ein Chaos.
Lawrence

5

BigTuna - geschrieben in Ruby, verwendet Rails und verwendet sich selbst als CI.


3
Beachten Sie, dass der Link appelier.com für BigTuna ein toter Link zu einer abgelaufenen Domain ist. Das Projekt ist jetzt auf Github zu finden .
Jeff Dickey

5

Sie können Codeship ausprobieren und sehen, ob es für Sie funktioniert (ich bin einer der Gründer).

Cloud-basierte kontinuierliche Integration und Bereitstellung (mit spezieller Heroku-Unterstützung)

Die ersten vier Ihrer Elemente sind bereits implementiert und funktionieren für eine Reihe von Unternehmen einwandfrei

  • Die offensichtliche Integration von Git / SVN und Test :: Unit
  • Integration mit Rake und / oder Capistrano
  • Eine Webschnittstelle, die den Status des Builds anzeigt
  • E-Mail-Benachrichtigung über fehlgeschlagene Builds.

Wir arbeiten auch an diesen Funktionen:

  • Desktop-Benachrichtigung (möglicherweise über Growl)
  • REST-API für Build-Status
  • Plugin-Framework zum Ausführen anderer Code-Analyse-Tools und zum Berichten von Ergebnissen in der Benutzeroberfläche



3

Mach es selbst. Schreiben Sie ein Bash-Skript, um Tests auszuführen, und führen Sie dann eine Bereitstellungsprozedur aus, wenn die Tests erfolgreich sind. Benötigen Sie Benachrichtigungen? Schießen Sie sich eine Klartext-E-Mail über Erfolg / Misserfolg. Benötigen Sie einen Scheduler? Cron-Job. Dies ist $ 0 / Monat, und Sie haben eine Ahnung, was Sie tun. Ich sehe nicht ein, wie mir die Zahlung von 40 USD / Monat dabei helfen kann, dies effizienter zu gestalten.

Betrachten Sie zum Beispiel: Meine Bereitstellung schlägt aufgrund einer falsch konfigurierten Asset-Pipeline fehl (Assets können nicht vorkompiliert werden). Dies wird nicht mit Einheiten-, Funktions-, Integrations-, Regressions- oder anderen Tests erfasst. Dieser Fehler wird von CI nicht abgefangen. Die Zeit, die ich für das Schreiben eines Bash-Skripts aufwenden würde, ist wahrscheinlich geringer als die Zeit, die ich für die Einrichtung einer CI-Umgebung aufwenden würde, und ich spare mir 40 US-Dollar pro Monat.

Juuuuuust warf meine zwei Pennys in die Diskussion; )


1

Run Code Run könnte das sein, was Sie brauchen.

Bearbeiten: Link entfernt, da er nicht mehr auf die frühere Run Code Run-Site verweist.


1
Jetzt kurz vor dem Herunterfahren. :(
Andrew Grimm

1

Und dann ist da noch CI Joe :

Es ist wie bei einem alten rostigen Pickup: Es mag stinken und ekelhaft sein, aber es erledigt den Job.

Wir benutzen es täglich.


1

Ich mag nur CI Joe, ich hatte Probleme mit allen anderen, CI Joe ist das absolute Minimum, um die Arbeit zu erledigen, super agil und zuverlässig. Die Hudson-Quelle ist schrecklich und die Benutzeroberfläche spricht mich nicht an.


0

Ich habe gerade eine sehr einfache Continuous Integration App für RubyOnRails + SVN / GIT veröffentlicht. Vielleicht sollten Sie es versuchen:

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

Ich nahm einige Ideen zu Mess- und Testwerkzeugen auf und nachdem ich einige CI-Werkzeuge ausprobiert hatte und niemanden davon mochte, beschloss ich, meine eigenen zu erstellen, ohne große XML-Dateien oder andere Konfigurationen erstellen zu müssen. Genau so, wie Rails gemacht wurde.

Wenn Sie möchten, senden Sie mir bitte ein Feedback.

Freundliche Grüße,

Felipe Giotto.


0

Das Ausführen von CI nach jedem Commit scheint ziemlich teuer zu sein, wenn Sie die Philosophie "Commit häufig" abonnieren. Wie wäre es, wenn Sie alle paar Stunden einen einfachen Cronjob ausführen und die Ergebnisse per E-Mail an eine Entwickler-Mailingliste senden?


Oder wie wäre es, wenn Sie Ihren CI-Server so einrichten, dass er nur einmal pro Stunde nach Änderungen fragt? Die meisten CI-Apps unterstützen diese Einstellung.
Jerhinesmith

2
Mit git kannst du dich oft festlegen, aber selten pushen.
Vanuan

0

Ich habe gerade einen Hudson / Jenkins dafür konfiguriert. Das Juwel ci_reporter kann dabei helfen, die von Hudson erwartete JUnit-Ausgabe zu formatieren, und Hudson verfügt über ein Rails-Plugin, sodass ich RCOV-Abdeckung, Testberichte, Rails-Statistiken und vieles mehr sehen kann.


Könnten Sie Ihr Setup mit den anderen Alternativen vergleichen?
Andrei

Da ich Rails 2.3.x für meine Produktionsprojekte verwende, derzeit nicht, da für die meisten anderen Alternativen Rails 3.x erforderlich ist. Wenn ich kann, werde ich es jedoch testen und meine Erfahrungen veröffentlichen.
Gabor Garami

Ich habe Jenkins auch mit Rails 3.x ausprobiert und es funktioniert sehr gut. Ich habe auch einige andere Lösungen ausprobiert (zum Beispiel IntegrityApp), aber da ich Jenkins auch zum Testen anderer Projekte verwende, wurde es die endgültige Lösung dafür. Das bedeutet nicht, dass IntegrityApp oder andere Dinge schlecht sind. IntegrityApp ist sehr gut, aber ich mag Jenkins ein bisschen mehr.
Gabor Garami

0

Sie sollten sich auch CloudMunch ansehen. Dies bietet eine polyglotte Plattform, mit der Sie verschiedene Sprachen als Teil Ihrer Codebasis mit umfangreichen Build-Metadaten verwenden können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.