Jenkins ist ein Tool, das die Continuous Integration (CI) unterstützt. CI ist eine Entwicklungs-Praxis, die es erfordert, das Entwickler ihren Code regelmäßig in ein zentrales Repository übertragen. Aus dem Code im Repository wird dann regelmäßig ein zentraler Build durchgeführt, um möglichst früh Fehler beim Build zu entdecken.
Jenkins wird auf einem Server (hier unser Raspberry) installiert, auf dem der zentrale Build des Projekts durchgeführt wird. Der Build wird in unserem Beispiel mit dem Gradle-Plugin von Jenkins durchgeführt. Die Dateien zum Build des Projekts liest Jenkins mittels des GIT-Plugins aus dem zentralen Repository GIT auf unserem Raspberry. Der Workflow von Jenkins kann folgendermaßen dargestellt werden:
Jenkins Konfiguration
Für die hier verwendeten Beispiel-Builds benötigt ihr die Jenkins-Plugins für das Repository GIT und das Build-Tool Gradle. In der Jenkins-Oberfläche könnt ihr die Plugins unter Jenkins verwalten -> Plugins verwalten jederzeit hinzufügen.
Installation des Jenkins-Servers
Dazu verwende ich wieder das Terminal-Programm auf dem iMAC und verbinde mich per ssh als Benutzer pi mit dem Raspberry. Weitere Infos dazu findet ihr z.B. hier: SSH-Verbindung mit dem Raspberry.
Bei der Installation hab ich mich an dem offiziellen Guide für die Jenkins-Installation für Ubuntu – Unix (welches auch auf dem Raspberry läuft) gehalten: Jenkins installieren.
In dem Guide wird ein Java-JDK ab Version 1.7 empfohlen. Auf dem Raspberry könnt ihr die installierte Java-Version mit diesem Befehl überprüfen:
java -version
Dann solltet ihr euren Raspberry noch auf den aktuellen Stand bringen:
sudo apt-get update sudo apt-get upgrade
Als erstes legt ihr ein Verzeichnis für Jenkins im Home-Verzeichnis an und wechselt in das Verzeichnis. Das Verzeichnis benötigt Jenkins später für die Installation der Plugins (ohne das Verzeichnis gab es Fehlermeldungen von Jenkins bei der Installation der Plugins):
mkdir Jenkins cd Jenkins
Für die Installation der neuesten Version von Jenkins muss zunächst ein neues Repository, von dem Jenkins geladen werden kann, für den Paket-Manager des Raspberry-Betriebssystems eingetragen werden. Die Original-Paketliste des Raspberry hat mir eine alte Java-Version (Open-JDK 1.7) und einen alte Version von Jenkins installiert. Als erstes wird nun das neue Jenkins-Repository im Paket-Manager eingetragen:
wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update
Danach könnt ihr Jenkins installieren:
sudo apt-get install jenkins
Die Installation führt folgende Schritte aus:
- Anlegen eines Jenkins-Users und Start des Service
- Logging in die Datei /var/log/jenkins/jenkins.log
- Anlegen der Konfigurations-Datei unter /etc/default/jenkins
- Jenkins-Server lauscht an Port 8080
Danach könnt ihr den Jenkins-Server in eurem Web-Browser zum ersten Mal mit der URL eures Raspberry aufrufen:
http://raspberrypi:8080
Nach kurzer Zeit sollte im Browser-Fenster diese Meldung erscheinen:
Danach erfolgt ein Security-Check. Auf dieser Seite werdet ihr aufgefordert, ein vom Jenkins-Installations-Programm erzeugtes Passwort einzugeben:
Das Passwort findet ihr in der Log-Datei /var/log/jenkins/jenkins.log:
Danach habt ihr die Wahl, die gängigsten Plugins automatisch installieren zu lassen oder ihr wählt die Plugins selbst aus:
Als nächstes werdet ihr aufgefordert einen Administrator für Jenkins anzulegen:
Zum Schluss erscheint die Admin-Oberfläche von Jenkins zur weiteren Konfiguration:
Deinstallation des Jenkins-Servers und der Paketliste
Um den Jenkins-Server wieder von eurem Raspberry zu entfernen müsst ihr folgende Schritte durchführen:
sudo service jenkins stop sudo apt-get remove --purge jenkins
Kleiner Tipp am Rande, wenn ihr mal wissen möchtet, welche Pakete alle auf eurem Raspberry installiert sind, könnt ihr euch mit diesem Befehl eine Text-Datei mit allen Paketen erzeugen:
dpkg -l > installierte-pakete.txt
Um die zusätzliche Paketliste und den Key wieder los zu werden müsst ihr zusätzlich die folgenden Schritte durchführen.
Zuerst könnt ihr euch die vorhandenen Keys aller Paketlisten anzeigen lassen:
sudo apt-key list
In der dann angezeigten Liste war der Key dieser:
pub 1024D/D50582E6 2009-02-01 uid Kohsuke Kawaguchi <kk@kohsuke.org> sudo apt-key del D50582E6
Danach könnt ihr den Key für die Jenkins-Paketliste löschen:
sudo apt-key del D50582E6
Zum Abschluss noch die Paketliste für Jenkins löschen:
sudo rm /etc/apt/sources.list.d/jenkins.list
Service-Kommandos für den Jenkins
In der Kommando-Zeile gibt es zum Stoppen, Start und Restart diese Kommandos für den Jenkins-Server:
sudo service jenkins stop sudo service jenkins start sudo service jenkins restart
Über die Jenkins-Weboberfläche geht das z.B. über die URLs:
http://yourRaspberry:8080/restart
oder
https://yourRaspberry:8080/safeRestart
Einen Update des Jenkins-Servers könnt ihr mit folgenden Befehlen durchführen:
sudo apt-get update sudo apt-get install jenkins
Weiter geht es mit der Installation de GIT-Repository.