Mit dem Projekt Hudson kann auf sehr einfache Art und Weise ein Kontinuierlicher Integrationsprozess realisiert werden. Die Installation besticht durch ihre Einfachheit. Es reicht ein Download der hudson.war. Der Befehl java -jar hudson.war startet den Server und schon kann man unter http://localhost:8080/hudson erste Versuche beginnen (per Default legt der Hudson alle Dateien unter USER_HOME/.hudson an).
Wir haben uns für eine Installation als Anwendung im Tomcat entschieden. Das Hudson-Home-Verzeichnis wurde in der Datei TOMCAT_ROOT/webapps/hudson/WEB-INF/web.xml auf /home/hudson umgestellt.
<env-entry-name>HUDSON_HOME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/home/hudson</env-entry-value>
</env-entry>
Nach einem Neustart der Applikation war Hudson unter http://appserver:8080/hudson/ aufzurufen. Mit der Option “enable security” unter http://appserver:8080/hudson/configure wurde die Anmeldung am Hudson erzwungen. Per Default werden die Benutzerinformationen aus der Datei tomcat-users.xml im Verzeichnis TOMCAT_HOME/conf gelesen. Alle Benutzer mit der Rolle “admin” dürfen sich am Hudson anmelden und entsprechend geschützte Arbeiten vornehmen.
Die Integration unserer Netbeans-Projekte gestaltete sich schwieriger, da diese ohne Anpassungen vom Hudson übersetzt, getestet und archiviert werden sollten. Letztlich mussten verschiedene Variablen durch ein projektspezifischen Start-Skript angepasst werden.
Am Beispiel eines Projekts, was verschiedene Bibliotheken und andere Projekte referenziert, soll die Vorgehensweise beschrieben werden:
- Die Werkzeuge ant (unter /usr) und junit (unter HUDSON_HOME/jobs/Ressourcen) auf den Server kopieren.
- Alle abhängigen Bibliotheken nach HUDSON_HOME/jobs/Ressourcen kopiert. Die Dateistruktur entspricht dabei der lokalen unter C:\Entwicklung\Ressourcen.
- Die referenzierten Projekte müssen als Hudson-Job angelegt und erfolgreich übersetzt sein.
- Die Jar-Dateien, der vom Projekt verwendeten Biblotheken (Projekt-Properties, Libraries), müssen ebenfalls nach HUDSON_HOME/jobs/Ressourcen kopiert werden. Welche Datei das sind, kann man unter dem Netbeans-Menü Tools/Library-Manager erfahren.
- Ein Skript ProjektName.sh wird unter HUDSON_HOME/jobs/ angelegt und entsprechend angepasst.
Folgendes Beispiel-Skript überschreibt für das Projekt ProjektName die Variable zum Projekt ProjektAbc. Des weiteren werden die Variablen “libs.swing-layout.classpath” und “libs.junit.classpath” umgebogen.
cd /home/hudson/jobs/ProjektName/workspace/trunk
# Alles folgende ist EINE Zeile:
/usr/apache-ant-1.7.0/bin/ant
-Dlibs.junit.classpath=../../../Ressourcen/junit-4.4.jar
-Dproject.ProjektAbc=../../../ProjektAbc/workspace/trunk
-Dlibs.swing-layout.classpath=../../../Ressourcen/swing-layout-1.0.1.jar