Ich denke, der Titel fasst es zusammen. Ich möchte nur wissen, warum das eine oder andere besser für die kontinuierliche Integration von Java-Projekten von Svn ist.
Antworten:
Als langjähriger CruiseControl-Committer und jemand, der Hudson noch nie benutzt hat, bin ich ziemlich voreingenommen, aber meine Meinung dazu ist:
Hudson ist viel einfacher in Betrieb zu nehmen (größtenteils über eine schöne Weboberfläche) und verfügt über eine sehr aktive Plugin-Entwickler-Community.
CruiseControl wird von vielen Drittanbietern unterstützt und bietet den Vorteil, dass Sie mit der XML-Konfiguration einige nette Tricks ausführen können, z. B. Plugin-Vorkonfiguration und include.projects, mit denen Sie die Konfigurationsinformationen mit dem Projekt versionieren können.
Wenn Sie nur ein paar Builds haben wollen, denke ich, dass Hudson der klare Gewinner ist. Wenn Sie viel haben wollen - und die XML nicht stören -, dann werden die XML-Konfigurationstricks von CruiseControl meiner Meinung nach zu einer echten Stärke.
Ich stimme dieser Antwort zu , wollte aber einige Punkte hinzufügen.
Kurz gesagt, Hudson (Update: Jenkins ) ist jetzt wahrscheinlich die bessere Wahl. In erster Linie, weil das Erstellen und Konfigurieren von Jobs ("Projekte" im CC-Vokabular) über die Web-Benutzeroberfläche von Hudson viel schneller ist als das Bearbeiten der XML-Konfigurationsdatei von CruiseControl (die wir zur Versionskontrolle verwendet haben, um den Überblick zu behalten). . Letzteres ist nicht besonders schwierig - es ist einfach langsamer und langweiliger.
CruiseControl war großartig, aber wie in Dan Dyers treffend benanntem Blog-Beitrag erwähnt, warum verwenden Sie Hudson immer noch nicht? , es leidet darunter, der Erste zu sein. (Ähm, wie Großbritannien, wenn Sie so wollen, später in der industriellen Revolution, als andere anfingen, es mit neueren Technologien zu überholen.)
Wir haben CruiseControl stark genutzt und sind nach und nach auf Hudson umgestiegen und haben es schließlich ausschließlich verwendet. Und noch schwerer: Dabei haben wir begonnen, den CI-Server für viele andere Zwecke als zuvor zu verwenden, da das Einrichten und Verwalten von Hudson-Jobs so praktisch ist. (Wir haben jetzt mehr als 40 Jobs in Hudson: die üblichen Build & Test-Jobs für stabile und Entwicklungszweige; Jobs im Zusammenhang mit der Freigabe (Erstellen von Installationsprogrammen usw.); Jobs, bei denen einige (experimentelle) Metriken für die Codebasis ausgeführt werden; Jobs, die ausgeführt werden (langsam) ) UI- oder Integrationstests für eine bestimmte Datenbankversion usw.)
Aus dieser Erfahrung heraus würde ich argumentieren, dass Hudson, selbst wenn Sie viele Builds haben, einschließlich komplizierter, eine ziemlich sichere Wahl ist, da Sie wie CC damit grundsätzlich alles tun können . Konfigurieren Sie Ihren Job einfach so, dass alle Ant- oder Maven-Ziele, Unix-Shell-Skripte oder Windows .bat-Skripte in der gewünschten Reihenfolge ausgeführt werden.
Was das Zeug von Drittanbietern betrifft ( hier von Jeffrey Fredrick erwähnt ) - das ist ein guter Punkt, aber ich habe den Eindruck, dass Hudson schnell aufholt und dass bereits eine sehr große Anzahl von Plugins dafür verfügbar ist.
Für mich sind die beiden Dinge, die ich an CruiseControl vermissen kann:
Kleiner Haftungsausschluss: Ich habe das CC-Projekt seit etwa einem Jahr nicht mehr genau verfolgt. (Aber auf den ersten Blick hat sich nichts dramatisch geändert.)
Hinweis (2011-02-03): Hudson wurde umbenannt / gegabelt wie Jenkins (von Hudson Schöpfer Kohsuke Kawaguchi und andere). Es sieht so aus, als würde Oracle - das den Hudson-Namen kontrolliert - auch " Hudson " behalten , aber meine persönliche Empfehlung ist, mit Jenkins zu gehen , egal was Oracle sagt.
Mein letztes Projekt haben wir mit CruiseControl gestartet. Welches rockte. Dann zogen wir nach Hudson, was noch mehr rockte. Die Dinge, die ich an Hudson mochte:
Die vor- und nachgelagerten Projekte. Ein Commit für Ihren Datenzugriffscode löst also möglicherweise auch einen Build der Präsentationsschicht aus.
Verwenden Sie ein vorhandenes Projekt ganz einfach als Ausgangspunkt für ein neues Projekt. Wenn Sie also die Gewohnheit haben, Entwicklungszweige zu erstellen, ist es ein Kinderspiel, sicherzustellen, dass diese kontinuierlich integriert werden.
ccnet.config
. Wirklich ziemlich einfach. "Leicht" kann in diesem Fall im Allgemeinen nur "leicht" sein, wenn Jenkins über CC betrachtet wird - in einer GUI im Vergleich zu XML-Dateien. TMTOWTDI, aber keines ist besonders schwierig.
Ein Unterschied ist, dass Hudson das Produkt eines einzigen genialen Intellekts ist - Kohsuke Kawaguchi. Aus diesem Grund ist es konsistent, kohärent und absolut solide. Der Nachteil könnte eine gewisse Einschränkung der Fortschrittsrate sein. Kohsuke ist jedoch unglaublich produktiv, deshalb würde ich mir darüber keine Sorgen machen. Und es ist erweiterbar. Wenn es also etwas gibt, für das Kohsuke keine Zeit hat (oder nicht will), können Sie es wahrscheinlich selbst tun.
Ich habe mir sowohl Cruise Control als auch Hudson angesehen, mich aber für Hudson entschieden, da es viel einfacher einzurichten und zu konfigurieren war. Hudson scheint heutzutage sehr verbreitet zu sein, mit regelmäßigen Veröffentlichungen und viel Erweiterbarkeit durch Plugins. Ich kann es nur empfehlen.
Hudson ist meiner Meinung nach die benutzerfreundlichere Alternative. Es kann vollständig über die Weboberfläche eingerichtet und gewartet werden (abgesehen von der Erstinstallation der Webanwendung natürlich).
Dies kann nur über CruiseControl gesagt werden, wenn Sie den integrierten XML-Datei-Editor zählen.
Nachdem ich beide verwendet habe, würde ich immer noch einen vorziehen, der keinen automatisierten Build hat.
Ich habe Tempomat ausprobiert ... Es ist gut ... Aber Dokumente sind fragmentiert. Das Dashboard ist verwirrend. Die Erstellung von Widgets ist ebenfalls verwirrend. Ich habe es nie mit Hudson versucht. Werde es am Wochenende versuchen.
Ich habe Jenkins kürzlich für den Bau von Borland BDS 2006-Projekten unter Verwendung von Subversion eingerichtet und bin sehr zufrieden damit. Ich habe CruiseControl noch nie verwendet, daher kann ich es nicht vergleichen. Lesen Sie meinen Blog-Beitrag für weitere Informationen.