Continuous Integration mit Hudson

Literatur  –  Kommentare

Simon Wiest
Continuous Integration mit Hudson
Grundlagen und Praxiswissen für Einsteiger und Umsteiger

2011, dpunkt Verlag
302 Seiten
€ 39,90
ISBN 978-3-89864-690-1

Wer sich professionell mit moderner Softwareentwicklung auseinandersetzt, kommt um Continuous Integration (CI) nicht herum. Jede Codeänderung wird innerhalb von Minuten vom CI-System bestätigt oder als Fehler ausgewiesen. Die vielbeschworene "Integrationshölle" am Ende eines meist unter Druck stehenden Projekts schafft es damit ab, da ständig integriert wird.

Simon Wiest, Professor für Informatik im Fachbereich "Electronic Media" an der Hochschule der Medien in Stuttgart und als freier Berater stark im Hudson-Projekt (Committer und Evangelist seit 2007) tätig, hat sich dem Thema CI mit einer Einführung in Hudson genähert. Im Buchmarkt findet man zu CI-Systemen wenig Literatur, sodass vorliegendes Buch fast schon eine Einzelstellung einnimmt. Auch wenn sich das Projekt Hudson gerade in den von Oracle unabhängigen Fork Jenkins und in das weiter bei Oracle bleibende Hudson aufspaltet, macht es weiterhin Sinn, sich mit der Lektüre von "Continuous Integration mit Hudson" auseinanderzusetzen, da auch Jenkins seine Wurzeln in Hudson hat und sich der Fork noch nicht wesentlich von seinem Ursprung entfernt hat.

Zunächst geht Wiest auf die "Integrationshölle" ein. Wer das eine oder andere Mal zustimmend schmunzelt, dem sei die weitere Lektüre des Buches dringend angeraten. Bevor sich der neugierige Leser mit dem Installieren und Konfigurieren von Hudson auseinandersetzen darf, folgen noch Kapitel zu den Vorteilen von CI, zu Praktiken und einige Anmerkungen zu Hudson. Hierbei belässt es Wiest nicht dabei, das von Kohsuke Kawaguchi entwickelte System vorzustellen, sondern er vergleicht es mit anderen etablierten CI-Systemen, etwa dem in die Jahre gekommenen CruiseControl.

Nachdem nun die theoretischen Grundlagen gelegt sind, geht es an die Installation von Hudson. Die reißerische Kapitelüberschrift "Schnellstart in 60 Sekunden" verdeutlicht, dass die Installation keinen großen Aufwand bedeutet. Er liegt vielmehr darin, die bestehenden Build-Prozesse so anzupassen, dass sie sich automatisch abarbeiten lassen. Beim Thema Konfiguration erläutert der Autor Jobtypen (externer Job, Free-Style, Maven-2, Multikonfiguration). Von Haus aus unterstützt Hudson Ant und Maven, wobei beim Letzteren Hudson nur den Ort der POM-Datei wissen muss. Weitere Themen sind Integration des Versionsmanagements, Auslösen von Builds, Einbinden von Testwerkzeugen, das Versenden von Benachrichtigungen und das Integrieren eines Issues-Trackers. Im Kapitel für Fortgeschrittene geht Wiest auf Themen wie parametrisierte und verteilte Builds, Parallelisierung der Builds und nützliche Plug-ins für Hudson ein.

Hudson wäre nicht ein erfolgreiches CI-System, wenn es nicht die Vielzahl an Plug-ins (mehr als 200) gäbe und eine vitale Community, die ständig neue Plug-ins herausbringt. Wiest geht zunächst auf Hudsons Plugin-Konzept ein, ehe er noch eine Beispielimplementierung eines Plug-ins ausführlich beschreibt. Die Sourcen dafür sind von der Buch-Website des Autors zu beziehen.

Abschließend betont Wiest nochmals eindringlich, dass der Aufwand nicht im Installieren und Einrichten eines CI-Servers steckt, sondern vielmehr die meiste Zeit damit verbracht wird, den Build-Prozess so aufzubereiten, dass Builds schnell erzeugt und in Hinblick auf mögliche Parallelisierung sowie eine hohe Testabdeckung durch JUnit-Test et cetera optimiert werden. Am besten haben sich Pilotprojekte, die CI einführten, bewährt. Den "großen Wurf", historisch gewachsene Projekte mit einem Paukenschlag unter die Regie eines CI-Servers zu stellen, sind meist nicht von Erfolg gekrönt, dafür dauert die Einführung aufgrund der Komplexität einfach zu lange, was dem Vertrauen in das CI-System nachhaltig schadet.

"Continuous Integration mit Hudson" ist ein Werk, das sich gut lesen lässt und schnell sowie zielgerichtet in Hudson einführt. Aufgrund der aktuellen Abspaltung mit Jenkins ist es vielleicht schon bald angebracht, eine Neuauflage herauszugeben, in der Wiest auf die sich dann sicherlich abzeichnenden Unterschiede der beiden CI-Systeme eingehen kann. Die Entwicklung der letzten Zeit hat aber gezeigt, dass deutlich mehr Unterstützer hinter Jenkins stehen als hinter Hudson. Wie auch immer die Entwicklung der beiden System voranschreiten wird, derzeit hat man mit Wiests Einführung ein gutes Werk an der Hand, um CI im eigenen Unternehmen einführen zu können. (ane)