Im Artikel PhoneGap meets Maven wurde gezeigt, wie man Maven dazu nutzen kann, eine PhoneGap-App zu bauen. Nun zeigen wir darauf aufbauend, welche Möglichkeiten sich aus der Verwendung des CI-Servers Jenkins ergeben.
Was benötigen wir dazu? In diesem Beispiel gehen wir davon aus, dass Jenkins auf einem Ubuntu-Rechner läuft. Weiterhin …
- … setzen wir eine funktionierende Jenkins-Instanz voraus. Eine Installationsanleitung ist auf der Jenkins-Homepagezu finden.
- Auf demselben Rechner muss das Java SDK mit einer Version 6 oder größer installiert sein.
- Auf demselben Rechner muss Maven in der Version 3.0.3 oder größer installiert sein.
- Wir benötigen ein Subversion-Repository, in welches das Maven-Projekt eingecheckt werden muss. Jenkins muss Zugriff auf dieses Repository haben. Mit Git funktioniert das Ganze ebenso.
- Wir benötigen einen User auf dem Ubuntu-Rechner, der über die notwendigen Rechte zur Installation des Android-SDK verfügt. Außerdem muss er in der Lage sein, die Umgebungsvariable
ANDROID_HOME
so zu setzen, dass andere Prozesse (Jenkins, Maven etc.) sie lesen können. - Wir benötigen eine Installation des Android-SDK. Dazu kommen wir jetzt.
Das Android SDK
Wir melden uns auf dem Ubuntu-Server an und laden das Android-SDK für Linux-Rechner herunter. Die URL für den Download finden wir auf der Android-Developers-Homepage.
dave@discovery.local:~ $ wget http://dl.google.com/android/android-sdk_r18-linux.tgz
Nach dem Download entpacken wir das SDK an eine geeignete Stelle.
dave@discovery.local:~ tar xfz android-sdk_r18_linux.tgz cd android-sdk-linux/tools ./android update sdk --no-ui
Das Update kann unter Umständen lange dauern, da eine Menge Dateien für die einzelnen Android-API-Versionen heruntergeladen werden.
Ganz zum Schluss setzen wir die Umgebungsvariable ANDROID-HOME
:
dave@discovery.local:~ export ANDROID_HOME=~/android-sdk-linux
Das machen wir idealerweise so, dass auch andere Prozesse diese Variable lesen können. Eine gute Möglichkeit ist, diese Variable in der Datei /etc/environment
zu setzen.
Jetzt haben wir eine Installation des Android-SDK, die von Maven und von Jenkins beim Bauen verwendet werden kann.
Build-Job in Jenkins anlegen
Bevor der Build-Job in Jenkins angelegt werden kann, muss unser Maven-Projekt in das Subversion-Repository eingecheckt werden. Ist das erledigt, legt man einen neuen Job in Jenkins an.
Wir beginnen mit dem Maven-Parent und setzen die Einstellungen für den Zugriff auf Subversion:
Dann folgen die Einstellungen für den Maven-Build:
Und das soll es fürs Erste auch schon gewesen sein. Wir speichern den neuen Job:
Die Einbindung von Artifactory und Sonar behandeln wir in einem weiteren Artikel.
Zunächst begnügen wir uns mit einem einfachen Job, der unser Projekt mit den Maven-Goals clean
und install
baut. Ein Klick auf Jetzt bauen startet den Build, der erfolgreich durchlaufen sollte. Für die untergeordneten Maven-Module können jetzt separate Jobs angelegt werden.
Die weiteren Möglichkeiten mit Jenkins sind:
- Die Build-Artefakte (jar- und apk-Dateien) können in ein Build-Repository wie z.B. Archiva oder Artifaktory exportiert werden.
- Mit Sonar kann eine statische Code-Analyse des Java- und JavaScript-Quellcodes durchgeführt werden.
- Mit Jenkins-Plugins können automatisierte Tests durchgeführt werden.
- Jenkins kann dazu automatisch Android-Emulatoren starten und mit diesen interagieren.
Doch dazu mehr im nächsten Artikel, der in Kürze hier erscheinen wird.
Bildquellen und Lizenz-Informationen
- Android Logo von Google unter Creative Commons BY
- Jenkins Project Logo unter Creative Commons BY-SA
- PhoneGap Logo unter Creative Commons BY-NC