Jenkins - Integration von einer JSF Anwendung
Verzeichnis
Einführung
Die folgenden Seiten zeigen die Integration einer JSF Anwendung in Jenkins. Zusätzlich werden noch andere nützliche Werkzeuge vorgestellt.
Jenkinsjob erstellen
Als erstes muss ein neuer Jenkinsjob erstellt werden. Hier wählt man 'Maven 2/3 Projekt bauen'.
Damit das Arbeitsverzeichnis angelegt wird, muss man einmal 'Jetzt bauen' anklicken.
Da bei diesem Beispiel auf einen Source-Code Management Server verzichtet wurde, kann direkt im Arbeitsverzeichnis des Jobs gearbeitet (Konfiguration Source-Code Management Server siehe Jenkins) werden.
Konfiguration des Jenkinsjobs
Bei der Job Konfiguration wird in diesem Fall 'Keines' gewählt.
Da es sich bei dem Beispiel um ein Maven-Projekt handelt, wird eine Maven-Version ausgewählt und der Pfad zu der Projektkonfigurationsdatei (pom.xml) angegeben. Zusätzlich müssen die gewünschten 'Goals' angegeben werden.
Beispiel JSF Anwendung
Das Beispiel basiert auf JSF 2.0 und wurde als Maven-Projekt unter Netbeans entwickelt (Glassfish Server Open Source Edition 3.1).
Vorausgesetzt wird eine Jenkins, Sonar und eine Netbeans Installation.
Folgendes ZIP-Archiv ist in das workspace-Verzeichnis des Jenkinsjobs zu entpacken.
Konfiguration
Es muss für das Beispiel eine Datenbank angelegt werden. Hier wird die in Netbeans integrierte Derby/JavaDB genutzt.
Hat man die Datenbank erstellt, muss man die Administrationsseite des Glassfish aufrufen.
JDBC Ressourcen/Verbindungspools
Es muss zuerst ein JDBC-Verbindungspool erstellt werden, damit eine Verbindung mit der Datenbank aufgebaut werden kann. Dazu erstellt man unter
Ressourcen -> JDBC -> JDBC-Verbindungspools -> Neu... einen neuen und gibt z. B. folgende Daten an:
Poolname: sec
Ressourcentyp: javax.sql.DataSource
Datenbanktreiber-Hersteller:: JavaDB
Weitere Eigenschaften
DatabaseName: [DATENBANKNAME]
User: [DATENBANKNUTZER]
Password: [DATENBANKPASSWORT]
ServerName: localhost
Nun wird unter Ressourcen -> JDBC -> JDBC-Ressourcen -> Neu.. eine neue Ressource hinzugefügt. Diese dient dazu, dass JSF Anwendungen eine Verbindung zu einer Datenbank herstellen können.
JNDI-Name: jdbc/sec
Poolname: sec (siehe Oben Poolname)
Es können jetzt die Tabellen für die Nutzer/Gruppenverwaltung erstellt werden. Hierzu steht die SQL Datei bereit, welche lediglich auf der Datenbank ausgeführt werden muss.
Es wird auch ein Benutzer angelegt (Nutzer: admin, Passwort: admin).
Jetzt muss die Struktur der Tabellen, welche die Nutzer/Gruppen verwaltet, noch bekannt gegeben werden. Dies lässt sich konfigurieren, indem man einen neuen Bereich erstellt.
Bereiche
Konfigurationen -> [Konfiguration auswählen, welche aktiv ist] -> Sicherheit -> Breiche -> Neu..
Bereichsname: sec
Klassenname: com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm
JAAS Context: jdbcBereich
JNDI: jdbc/sec (oben erstellt)
Benutzertabelle: usertable
Benutzernamenspalte: username
Passwortspalte: password
Gruppentabelle: grouptable
Gruppennamenspalte: groupid
Digest-Algorithmus: MD5
Der Glassfish Server ist nun fertig konfiguriert und vorbereitet für das Beispiel.
Jetzt müssen im Projekt die glassfish-web.xml und die web.xml editiert werden, diese sind jedoch in dem Beispiel bereits enthalten.
Mögliche Probleme
- Wenn der in Netbeans integrierte Glassfish Server genutzt wird und parallel Sonar installiert ist, kann es zu Problemen kommen, da beide den Port 9000 belegen.
Der Port der Standard Sonar Derby Installation ist in der conf/sonar.properties Datei zu konfigurieren und ggfs. zu ändern.
Integration von Testwerkzeuge
In diesem Abschnitt soll eine Auswahl an Werkzeugen vorgestellt werden, die zur Einbindung in Jenkins zur Verfügung stehen.
Sonar
Als letztes aktiviert man noch die Option 'Sonar' (Voraussetzung Sonar Installation und Jenkins Integration Sonar). Hiermit aktiviert man die Sonar Integration für diesen Job.
Wenn alles richtig konfiguriert ist, sollte man bei dem nächsten Build in der Jobübersicht ein neuen Link Sonar sehen.
Dieser Link führt zu der Sonar Projekt Übersicht (Dashboard).
JMeter
Um JMeter-Berichte integrieren zu können, muss das 'Performance Plugin' installiert sein. Bei dem JMeter-Testplan sollte ein Listener 'Simple Data Writer' erstellt werden, der die Ergebnisse in eine '.jtl' Datei ausgibt.
Als Optimierung könnte man auch das Durchführen des Testplans als ANT Task realisieren, welcher innerhalb Jenkins gestartet wird.
Bei der Jobkonfiguration muss dann der Pfad zu diesen Berichten eingestellt werden.
Die Ergebnisse werden nun grafisch dargestellt.