CruiseControl

CruiseControl ist ein als Open Source verfügbares Toolkit zur sogenannten kontinuierlichen Integration ( Continuous Integration) von Software-Systemen im Rahmen eines Build-Prozesses, der zeitabhängig oder ereignisabhängig gestartet werden kann. CruiseControl ist plattformunabhängig, ursprünglich in Java implementiert - es gibt jedoch auch eine Implementierung in Ruby eine .NET. Daher ist jeweils eine adäquate Laufzeitumgebung zur Ausführung bereitzustellen. CruiseControl steht gemäß den BSD-Lizenzbedingungen unter dem u.g. Link - derzeit in Version 2.8.3 - zur Verfügung und ist zertifiziert durch die OSI. Der Zugriff auf die Artefakte des Testlaufs ist u.a. durch Emails sowie RSS-Feeds möglich. Ein mit CruiseControl vergleichbares Werkzeug ist Hudson.


Die Bedingungen der BSD-Lizenz besagen, dass eine Software frei verwendet darf - d.h. Kopieren, Modifizieren und Verbreiten der Software ist gestattet -, sofern die Copyright-Kennzeichnung der ursprünglichen Software erhalten bleibt.

Die kontinuierliche Integration

Unter einer kontinuierlichen Integration versteht man den Prozess des - vor allem regelmäßigen sowie vollständigen - Neubildens und Testen einer Software. Dabei kann eine diesbezügliche Umgebung, abhängig vom Projektumfang, der Größe des Teams oder dem Anspruch an das System, beliebig komplex werden. In jedem Fall wird eine zentrale Versionsverwaltung ( Subversion, CVS u.a.) als Basis benötigt, aus der dann die Software "entnommen" wird und mit Hilfe spezieller Scripts automatisiert die "Builds" erstellt werden. Die Übersetzung in ausführbare Einheiten erfolgt bei der kontinuierlichen Integration meist mehrmals täglich - idealerweise bei jeder angenommenen Änderung (Commit). Üblich ist auch die Erstellung sogenannter Nightly Builds, einem nächtlichen Build-Prozess mit anschließendem Deployment- (Installations-) Prozess und automatischem Start der Ausführung. Sofern einer dieser Prozesse mit einem Fehler endet, so spricht man von einem Gebrochenen Build (Broken Build). Die Abbildung verdeutlicht den grundlegenden Ablauf eines Build-Prozesses.

Im Zusammenhang mit CruiseControl spricht man auch von einem Integrationsserver. Dieser dient der automatisierten Integration, indem eingecheckter Code auf einem separat eingerichteten System einem kompletten Build- und Testzyklus unterzogen wird - CruiseControl ist dann die Software zum Betrieb dieses Servers.

Der Kern der CruiseControl

Der Kern von CruiseControl besteht im Wesentlichen aus folgenden Teilen: der Build-Loop, der Build Results JSP und dem Dashboard.

Build-Loop in CruiseControl

Build-Loop in CruiseControl

Die Build-Loop generiert einen Prozess im Hintergrund des Integrationsservers, dessen Konfiguration über eine XML-Datei erfolgt. Der Integrationsserver prüft periodisch, ob Änderungen im zentralen Quellcode-Repository durchgeführt wurden. Sofern dies der Fall ist, werden die folgenden Schritte abgearbeitet:

  • durch Interaktion mit der Versionsverwaltung werden die neuesten Versionen des Quellcodes bereitgestellt,
  • dann Ausführung aller notwendigen Compile-, Link- und Package-Prozesse,
  • die Generierung aller zuvor definierten Testläufe und schließlich
  • die Information aller beteiligten Versionen über die Artefakte (Ergebnisse) des letzten Builds.
Dabei unterstützt CruiseControl den Zugriff auf die Artefakte auf verschiedene Weisen. Alle Entwickler, die Code für den aktuellen Build zur Verfügung gestellt haben, können per E-Mail oder RSS-Feed benachrichtigt werden. Sofern Fehler aufgetreten sind, wird zusätzlich der entsprechende Entwickler benachrichtigt, um diese bis zu einem zu vereinbarenden Termin zu berichtigen und den korrigierten Quell-Code dann wiederum in die Versionsverwaltung einzuchecken oder die fehlerhafte Datei generell auszuchecken.

Zusätzlich wird nach jedem Build-Loop eine Log-Datei angelegt, die von der Build Results JSP als Grundlage für eine Historie der Artefakte verwendet wird.

Eine übersichtliche Form der Visualisierung der Artefakte aller Build- und Testzyklen wird durch das CruiseControl Dashboard angeboten. Dabei werden sowohl aktuell ablaufende Prozesse als auch die Ergebnisse der Compilierung dargestellt. Die Grafik enthält die Fehler der Compilierung, die Ergebnisse der Tests und Details hinsichtlich der Dateien, die sich seit dem zurückliegenden Build-Prozess geändert haben.

Mit dem Einsatz eines separaten Integrationsservers kann jederzeit ein konsistentes Repository des Quellcodes sichergestellt werden. So kann auch frühzeitig festgestellt werden, ob alle Dateien für einen voll-ständigen Build-Prozess zur Verfügung stehen. Auch eine sinnvolle Verteilung der Ressourcen im Hinblick auf aufwendige Test-Zyklen kann so dargestellt werden.

http://cruisecontrol.sourceforge.net/

Informationen zum Artikel
Deutsch: CruiseControl
Englisch:
Veröffentlicht: 28.10.2013
Wörter: 651
Tags: #Entwicklung, Codierung
Links: .NET, Artefakt, CI (continuous integration), Code, Compiler