CruiseControl gibt die Kontrolle ab - JAXenter
Cruise: Kommerzieller Nachfolger von CruiseControl

CruiseControl gibt die Kontrolle ab

Markus Stäuble

Continuous Integration ist heutzutage aus der professionellen Softwareentwicklung ein wichtiger Bestandteil, der nicht mehr wegzudenken ist. Thoughtworks hat sich in diesem Umfeld mit dem unter der BSD Lizenz stehenden CruiseControl einen Namen gemacht. Nach über 10 Jahren Einsatz von CruiseControl in den unterschiedlichsten Kundenprojekten hat Thoughtworks die Erkenntnisse aus diesen Projekten in ein neues System verarbeitet, das Ende Juli veröffentlicht wurde. Dieses System mit dem treffenden Namen Cruise wird als kommerzielles Produkt positioniert.

Jeder hat sicherlich andere Ansprüche an einen Buildprozess und somit auch an ein System zur Realisierung von Continuous Integration. Dieses Feld ist einerseits von vielen Tools aus dem Open-Source-Umfeld besetzt, wie z.B. Continuum, CruiseControl, Luntbuild oder auch Hudson. Andererseits tummeln sich hier aber auch kommerzielle Produkte, wie z.B. Bamboo von Atlassian oder auch TeamCity von JetBrains. Hierzu gesellt sich nun das bereits erwähnte Cruise von Thoughtworks. Cruise steht für die Plattformen Windows XP (oder Windows Server 2003), Mac OSX (10.5) und Linux (u.a. Ubuntu) zur Verfügung.

Cruise besteht aus einem Server (Cruise Server) und mehreren Agents (Cruise Agent), die vom Server die Aufgaben delegiert bekommen. Ein Buildprozess kann somit von mehreren Agents parallel verrichtet werden. Die Agents müssen dabei nicht auf dem gleichen Rechner wie der Server laufen, sondern können verteilt laufen. Ein Buildprozess wird in einer so genannten Pipeline abgebildet. Diese Pipeline kann aus mehreren Stages bestehen. Die Stages wiederum können einzelne Jobs besitzen. Diese Jobs, die von Agents ausgeführt werden, können verteilt auf unterschiedlichen Rechnern laufen. Der Übergang von einer Stage in eine andere Stage erfolgt erst, wenn alle Jobs erfolgreich abgeschlossen sind. Die grobe Struktur eines Buildprozesses in Cruise ist in Abbildung 1 visualisiert.

Abb. 1: Struktur innerhalb von Cruise

Diese Agenten sind u.a. ein Mechanismus, um einen Buildprozess aufzuteilen. Ein Anwendungsfall, der von Thoughtworks aufgeführt wird, ist die Aufteilung von Testsuiten. Dies kann sogar so weit gehen, dass Testsuites als Jobs auf unterschiedlichen Plattformen ausgeführt werden. Die Stage wird nur dann auf grün gestellt, wenn alle Jobs erfolgreich ausgeführt wurden. Nur in diesem Fall wird die nächste Stage ausgeführt. In Abbildung 2 ist ein nichterfolgreicher Ablauf (rot) und ein erfolgreicher Ablauf (grün) dargestellt.

Abb. 2: Darstellung des Status der einzelnen Builds
Der einfache Selbsttest

Um zu sehen, ob Cruise auch auf die eigenen Bedürfnisse passt, steht eine 30-tägige Testversion zum Download bereit. Diese Version kann mit maximal sechs Agents betrieben werden. Die Anzahl der gewünschten Agenten bestimmt übrigens auch den Lizenzpreis. Für den Testlauf muss sowohl eine Version des Cruise Server als auch eine Version eines Cruise Agent heruntergeladen werden. Nach dem Start des Cruise Server wird automatisch ein Browser mit der webbasierten Oberfläche gestartet. Nach dem Start des Cruise Agent (kann auch auf dem gleichen System wie der Server laufen) wird dieser automatisch vom Cruise Server gefunden. Nun steht die Einrichtung einer ersten Pipeline an (Abb. 3).

Abb. 3: Konfiguration einer Pipeline

Nach der Eingabe des Projektnamens wird das Buildsystem ausgewählt. Unterstützt wird dabei Apache ANT, NAnt und Rake. Sollte dies nicht ausreichen, kann auch eine beliebige ausführbare Datei (Menüpunkt exec) gestartet werden. Nun fehlt noch die Angabe der URL zum Versionsverwaltungssystem. Unterstützt wird das System Subversion und zusätzlich Mercurial. Sollte man gerade kein Projekt für den Test zur Hand haben, kann auch ein Open-Source-Projekt verwendet werden. Für diese Evaluierung wurde z.B. CLI (URL zu Subversion von CLI: http://svn.apache.org/repos/asf/commons/proper/cli/trunk) genommen. Ohne weitere Angabe wird nun das Buildfile gestartet. Die gute Dokumentation hilft nun, weitere Jobs und auch Stages anzulegen. Die Oberfläche von Cruise ist sehr intuitiv und lädt zum weiteren Ausprobieren ein. Es gefällt auch sehr, dass die Oberfläche mit Ajax-Elementen gespickt ist, die die unterschiedlichen Informationen im Hintergrund aktualisieren. Erwähnenswert ist, dass der Cruise Server über ein zentrales Repository verfügt (Abb. 4).

Abb. 4: Zentrales Repository auf dem Cruise Server

Auch wenn die Agenten verteilt laufen, ist es möglich, Artefakte in diesem zentralen Repository abzulegen. Falls der beschriebene Mechanismus mit Job, Stage und Pipeline nicht ausreicht, besteht die Möglichkeit auch Abhängigkeiten zwischen Pipelines zu definieren. D.h. eine Pipeline kann von einer anderen Pipeline angesteuert werden.

Mehr Kontrolle für den Buildprozess?

Rein vom Namen kann Cruise den Ursprung zu CruiseControl mit Sicherheit nicht leugnen. Aber nach den ersten Gehversuchen denkt man nicht mehr richtig an CruiseControl, höchstens noch bei der Einrichtung der Pipeline bei der u.a. Apache ANT als Buildsystem direkt unterstützt wird. Die nostalgischen Gedanken kommen sicherlich wieder beim Lizenzmodell auf. Denn wenn man mehr als zwei Agenten fahren möchte, muss das eigene Budget angefasst werden. Wie bei jedem anderen kommerziellen Produkt auch, lohnt es sich auf jeden Fall die Testversion auszuprobieren. Mit den 30 Tagen Laufzeit (und maximal sechs Agenten) sollte es ausreichen, auch eine etwas komplexere Buildstrecke auszuprobieren. Neben den Möglichkeiten zum Verteilen des Builds hat Thoughtworks mit Cruise auch eine intuitive Oberfläche erstellt. Eine interessante Beigabe ist z.B., dass die Zustände der einzelnen Jobs an der Weboberfläche verfolgt werden können. Ein Wehrmutstropfen für einige ist sicherlich, dass Maven nicht direkt unterstützt wird. Wer das verschmerzen kann, sollte einen Testlauf wagen. Denn eines ist sicher: Die Kontrolle über Ihren Buildprozess verlieren Sie mit Cruise nicht!

Markus Stäuble ist CTO (Head of Technology) bei namics (deutschland) GmbH, einem führenden IT- und Web-Dienstleister. Darüber hinaus ist er freier Autor von Fachartikeln.
Geschrieben von
Markus Stäuble
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.