Bubbles green, Build is clean

Aufbau des automatisierten Build-Systems

Das verwendete Build-Skript ist mit geringen Anpassungen universell für das Erstellen von Builds von Eclipse-RCP-Anwendungen einsetzbar. Als Beispielanwendung wird das, der Eclipse IDE beiliegende, RCP Mail Example verwendet. Die Aufteilung erfolgt dabei in zwei separate Projekte. Ein Plug-in-Projekt (de.batacs.rcp.mail.app), das die eigentliche RCP-Mail-Anwendung inklusive der entsprechenden Ressourcen und eine Produktdefinition enthält sowie ein Featureprojekt (de.batacs.rcp.mail.feature), das das Plug-in de.batacs.rcp.mail.app beinhaltet. Die Produktdefinition basiert dabei auf Features. Zudem befinden sich beide Projekte in einem Subversion Repository. Es empfiehlt sich darüber hinaus ein separates Projekt anzulegen, in dem build.xml und build.properties abgelegt werden. Während des Build-Prozesses werden dann alle erforderlichen Artefakte in ein temporäres Build-Verzeichnis in diesem Projekt kopiert. Damit dies möglich ist, müssen alle Plug-ins und Features, die zum Übersetzen der Anwendung erforderlich sind, im init-Task des Build-Skripts angegeben werden:

Einstellungen bezüglich der zu verwendenden Eclipse IDE und dem Build Target werden in der Datei build.properties vorgenommen. Hier muss auch angegeben werden, welche Produktdefinition als Ausgangsbasis für das Build verwendet werden soll. Sind die beiden Dateien entsprechend angepasst, kann innerhalb der Eclipse IDE (Rechtsklick auf build.xml, Run As | Ant Build) ein erstes Build erzeugt werden. Wichtig ist, dass zuvor alle Werte in der build.properties entsprechend der Build-Umgebung angepasst wurden. Sollten hier bereits Fehler auftreten, kann dies daran liegen, dass nicht alle Abhängigkeiten aufgelöst werden können. Das in der build.properties angegebene Build Target muss alle Plug-ins und Features enthalten, die zum Übersetzen der Anwendung erforderlich sind. Werden Builds für verschiedene Plattformen (siehe configs-Attribut in build.properties) erstellt, muss dort auch das entsprechende Delta-Pack vorhanden sein.

Nachdem CruiseControl heruntergeladen und in ein entsprechendes Verzeichnis entpackt wurde, müssen die Dateien build.xml und build.properties in das CruiseControl-Projektverzeichnis (/projects/rcpmail) kopiert werden. Lediglich die Werte für die Eigenschaften buildDirectory und pluginLocation müssen an die CruiseControl-Installation angepasst werden.

Welche Builds in welchen Intervallen automatisiert erzeugt werden sollen, wird in der Datei config.xml festgelegt. Jede Build-Konfiguration besteht minimal aus den Elementen modificationset, schedule und publishers. Das modificationset gibt an, in welchem Intervall (quitperiod) das angegebene Repository auf Änderungen überprüft werden soll. Im Falle von Subversion muss das angegebene Verzeichnis (/projects/rcpmail/src) eine gültige Working Copy enthalten – die erforderlichen Module müssen also zuvor einmalig mithilfe eines svn co name.des.moduls auf der Konsole ausgecheckt werden:

Mit dem schedule-Element wird festgelegt, in welchen Abständen und wie neue Builds erzeugt werden sollen. Im nachstehenden Fall wird alle 300 Sekunden ein neues Build erzeugt:

Zuletzt muss noch festgelegt werden, welche Aktionen im Erfolgs- bzw. Fehlerfall durchgeführt werden. Hierzu dienen die verschiedenen publisher-Plug-ins. In diesem Beispiel wird im Erfolgsfall das vollständige Build in das Verzeichnis artifacts/rcpmail kopiert. Sollten Fehler auftreten, wird der Entwickler per Instant Message benachrichtigt:

Ist die Konfiguration abgeschlossen, wird CruiseControl über eines der beiliegenden Startskripte gestartet. Solange CruiseControl läuft, werden in dem im schedule-Element angegebenen Intervall automatisch neue Builds erzeugt. Zudem wird eine Webanwendung gestartet, über die sich der Build-Prozess überwachen und steuern lässt. Der Standard-Port für diese ist 8080. Er kann in den Startskripten verändert werden. Die Konfigurationsmöglichkeiten sind bei CruiseControl vielfältig und die verfügbaren Plug-ins zahlreich. Es empfiehlt sich daher ein Blick in die Referenzdokumentation.

Fazit

Das hier beispielhaft aufgesetzte automatisierte Build-System lässt sich problemlos auch für größere Eclipse-RCP-Anwendungen einsetzen. Dabei müssen lediglich die entsprechenden Plug-ins und Features in der build.xml im jeweiligen Projektverzeichnis sowie in der config.xml von CruiseControl eingetragen werden. Zudem empfiehlt sich auch ein Blick auf PluginBuilder. Das dort angebotene Eclipse-Plug-in hilft bei der Erstellung von Build-Skripten, die auch mit CruiseControl verwendet werden können.

Dipl. Inform. (FH) Daniel Meisen hat an der Technischen Fachhochschule Berlin Medieninformatik studiert und arbeitet zurzeit an seiner Masterarbeit. Er ist als freiberuflicher Berater und Coach im Java- und Lotus-Notes-Bereich tätig. Dabei hat er bereits für international operierende Unternehmen wie die Converteam GmbH, die Motorola GmbH und die TÜV Rheinland Japan Group in Yokohama gearbeitet.
Kommentare

Schreibe einen Kommentar

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