Jenkins CI unter Debian einrichten und absichern

Installation Jenkins CI

Bei Jenkins handelt es sich um ein Werkzeug, welches in keinem größeren Buildprozess fehlen sollte, einen Buildserver. Werden einfache Projekte meist direkt in der IDE gebaut, verliert man bei größeren schnell die Übersicht und das Zusammentragen aller nötigen Quellen und Compilern wird immer aufwendiger. Ziel eines Buildservers ist es, in Zusammenarbeit mit einer Versionsverwaltung diesen Prozess zu automatisieren. Man ist somit in der Lage über viele Builds hinweg eine gleichbleibende Qualität zu liefern.

Durch sein Plugin-System ist Jenkins zudem in der Lage nahezu jede weiter Aufgabe zu übernehmen. Jenkins wird als WAR-Datei ausgeliefert und lässt sich entweder in einem vorhandenen Server integrieren (z. B. Apache Tomcat) oder als Stanalone-Variante betreiben. Bei letzterer wird eine Java-Server-Umgebung für die Jenkins-Instanz gestartet. Unter Debian kann man sich die händische Installation etwas erleichtern in dem man das von http://jenkins-ci.org/ bereitgestellte Debian-Paket verwendet. Es befindet sich nicht in den offiziellen Paketquellen, daher müssen wir selbige zuerst erweitern.

Mit folgendem Befehl tragen wir die Paketquellen für Jenkins  ein:

folgende Zeile hinzufügen:

Damit die neue Quelle auch authentifiziert werden kann, müssen wir noch die Schlüssel übernehmen:

Nun aktualisieren wir noch unseren Paketkatatlog und installieren das Jenkins-Paket.

Konfiguration Jenkins

Nach der Installation würde Jenkins auf Port 8080 lauschen und im Standalone-Modus starten. Dies hat jedoch einen entscheidenden Nachteil: Die Standalone-Variante lässt sich nur begrenzt absichern. Jenkins erlaubt zwar eine Benutzerverwaltung einzurichten, will man jedoch die gesamte Weboberfläche vor den Augen neugieriger Besucher schützen, so muss man etwas in die Trickkiste greifen.

Zuerst bearbeiten wir die Konfiguration so, dass ein Zugriff von außen nicht mehr möglich ist. Mit dem folgenden Befehl wird die Konfiguration geöffnet:

Möchte man Jenkins auf einem anderen Port laufen lassen, so muss man lediglich die Einstellung

ändern in

Damit hätten wir den Standardport geändert. Nun lassen wir nur noch Verbindungen zu, welche vom Server selbst kommen. Hierzu müssen wir in der Konfiguration eine neue Variable anlegen:

Damit diese Einstellung beim Starten berücksichtigt wird, müssen auch die Startparameter angepasst werden. Hierzu ändern wird die vorhandenen Parameter von

zu

Nun können wir Jenkins bereits starten, ihn jedoch noch nicht von außen erreichen.

Reverse Proxy einrichten

Damit wir auch von außen auf die Weboberfläche gelangen können, richten wir nun einen Reverse Proxy unter einem vorhandenen Apache-Server ein.

Zuerst müssen wir die erforderlichen Module aktivieren:

Wir wollen nur den Benutzern Zugriff gewähren, welche wir zuvor in eine htpasswd-Datei eingetragen haben.

Nun legen wir einen vHost an, damit Apache auch weiß, unter welcher Adresse unser Jenkins von außen erreichbar sein soll und wohin der Proxy weiterleiten soll.

Wir öffnen eine neue Konfigurationsdatei mit folgendem Befehl:

Und fügen dort die folgende Konfiguration ein:

Nun nur noch den Apache-Dienst durchstarten damit die Konfiguration geladen wird:

Nun sollte man in der Lage sein, den eingerichteten Jenkins über den Reverse Proxy „http://jenkins.hostname.de“ erreichen zu können. Hierbei wird nach dem von uns eingetragenen Passwort gefragt.