© Excellent backgrounds/Shutterstock.com
Kolumne: Docker rockt Java

Kolumne: Docker rockt Java


In einem Jenkins-Setup befinden sich meist neben dem Master verschiedene Slave-Instanzen. Für die Projekte ist eine umfangreiche Konfiguration zum Erzeugen, Testen und Publizieren notwendig. Damit Jenkins-Slave-­Instanzen für viele Projekte genutzt werden können, kommt es zu einer komplexen Installation mit unerwünschten Abhängigkeiten zwischen den Projekten. Die Provisionierung der verschiedenen Build-Tools ist aufwendig. In diesem Artikel werden die Grundlagen beschrieben, Jenkins mit vielen Docker-Containern zu betreiben.

In den letzten zwei Jahren hat sich Docker in der Produktion und Entwicklung stark verbreitet. Immer mehr Werkzeuge, Programmiersprachen und Services stehen als Docker-Image bereit. Zeit, von diesen fertigen Bausteinen in der eigenen CI-/CD-Welt zu profitieren. Jenkins wird seit einem Jahr als Trusted Build auf dem Docker Hub angeboten [1]. Die aktuellen stabilen Jenkins-Releases (LTS) werden auf der Basis von OpenJDK 8 und Debian 8 bereitgestellt. Wer immer die aktuelle Version von Jenkins einsetzen möchte, kann dies mit der Version von jenkinsci/jenkins realisieren [2], [3]. Der Start des eigenen Jenkins-Masters gelingt mit Docker beispielsweise folgendermaßen:

$ mkdir -p jenkins $ docker run -d —p 8080:8080 \ -v $(pwd)/jenkins:/var/jenkins_home \ --name jenkins-master jenkins

Die Konfiguration und Daten des Jenkins-Masters werden im Beispiel lokal auf einem Host-Volume gespeichert – nicht vergessen, den Nutzer jenkins auf einem Linux-Host einzurichten. Nun kann die Administration des Jenkins im Browser, mit Scripts oder durch das REST-API erfolgen [4]. Es müssen nicht nur Nutzer und Jobs, sondern auch viele Plug-ins installiert werden. Für diese Installation ist es sinnvoll, ein eigenes Docker-Jenkins-Image zu erzeugen.

Den eigenen Jenkins-Master installieren

Das Basis-Jenkins-Image stellt für diesen Zweck direkt ein Installationsskript für die Plug-ins bereit. Im Beispiel werden noch entsprechende Erweiterungen der Gruppen und Nutzer vorgenommen, damit der Jenkins-Master auf den Docker Daemon des Hosts zugreifen kann. Es werden dem Jenkins-Nutzer sudo-Privilegien eingeräumt. Im speziellen Fall wird einfach die aktuelle Version von Jenkins und der Plug-ins installiert, die im Moment der Erzeugung vorliegen (Listing 1). Wer eine kontrollierte Versionierung benötigt, muss die entsprechenden Versionsangaben herausfinden und im Dockerfile eintragen. Man sollte die Abhängigkeiten der Module manuell berücksichtigen, die Installationsreih...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang