Kontinuierliche Integration mit Hudson

Screenshot Hudson Mit dem Projekt Jenkins (früher Hudson) kann auf sehr einfache Art und Weise ein Kontinuierlicher Integrationsprozess realisiert werden. Im Buch Jenkins: The Definitive Guide finden sich weitere Details. 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>
   <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:

  1. Die Werkzeuge ant (unter /usr) und junit (unter HUDSON_HOME/jobs/Ressourcen) auf den Server kopieren.
  2. Alle abhängigen Bibliotheken nach HUDSON_HOME/jobs/Ressourcen kopiert. Die Dateistruktur entspricht dabei der lokalen unter C:\Entwicklung\Ressourcen.
  3. Die referenzierten Projekte müssen als Hudson-Job angelegt und erfolgreich übersetzt sein.
  4. 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.
  5. 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.

[code lang=“bash“]# Zum Projekt wechseln:
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
[/code]

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.