# Jenkins: Das Schweizer Taschenmesser der Enterprise-Automatisierung
TL;DR / Management Summary Trotz der Konkurrenz durch GitLab und GitHub bleibt Jenkins das mächtigste Tool für komplexe, plattformübergreifende Automatisierung. Es basiert auf einer Master-Worker-Architektur und nutzt die Sprache Groovy, um hochgradig individuelle Pipelines zu schreiben. Ein Senior Admin nutzt Jenkins, um Proxmox-Cluster (Artikel 661), Windows-Builds und Legacy-Hardware in einem einzigen Workflow zu vereinen. Die Stärke liegt in den über 1800 Plugins, die fast jede Technologie anbinden können.
# 1. Architektur: Master und Agents
Die Verteilung der Arbeit.
Jenkins trennt die Steuerung von der Ausführung:
- Jenkins Master: Die GUI, die Job-Planung und das Plugin-Management.
- Jenkins Agents (Workers): Kleine Java-Prozesse, die auf entfernten Servern (z.B. LXC in Proxmox) laufen und die eigentlichen Befehle ausführen.
- Vorteil: Sie können einen Linux-Agent für Web-Apps und einen Windows-Agent für .NET-Builds im gleichen Cluster betreiben.
# 2. Pipeline as Code: Jenkinsfile
Orchestrierung via Groovy.
Moderne Jenkins-Jobs werden als Jenkinsfile im Git-Repository gespeichert:
pipeline {
agent { label 'pve-runner' }
stages {
stage('Validate') {
steps {
sh 'ansible-lint site.yml'
}
}
stage('Deploy') {
steps {
sh 'ansible-playbook -i hosts site.yml'
}
}
}
}
# 3. Deep Dive: Shared Libraries
Code-Wiederverwendung für Profis.
In großen Teams schreiben Sie nicht für jedes Projekt die gleiche Pipeline neu.
- Aktion: Erstellen Sie eine Jenkins Shared Library (in Groovy).
- Nutzen: Sie definieren eine Funktion
standardDeploy(). Alle Teams rufen nur noch diese Funktion auf. - Vorteil: Sicherheits-Updates am Deployment-Prozess müssen nur an einer Stelle (in der Library) geändert werden.
# 4. Day-2 Operations: Plugin-Hygiene
Den ‘Dino’ stabil halten.
Jenkins ist berüchtigt für seine Abhängigkeit von Plugins.
- Wichtig: Führen Sie Plugin-Updates nur nach einem vollständigen Backup der VM (Artikel 671) durch.
- Sicherheit: Deaktivieren Sie ungenutzte Plugins, um die Angriffsfläche zu minimieren.
# 5. Troubleshooting & “War Stories”
Wenn die Pipeline bricht.
# Top 3 Fehlerbilder
-
Symptom: Jobs schlagen fehl mit “No space left on device”.
- Ursache: Jenkins löscht alte Build-Workspace-Daten nicht automatisch.
- Fix: Nutzen Sie das
Wipe out repository & build dayPlugin oder einen Cron-Job am Agent.
-
Symptom: “Slave node disconnected”.
- Ursache: Firewall-Blockade auf Port 50000 (JNLP) oder Java-Versionskonflikt zwischen Master und Agent.
-
Symptom: Jenkins reagiert extrem langsam.
- Lösung: Erhöhen Sie den Heap-Space der Java Virtual Machine (JVM).
# “War Story”: Der “Plugin-Hell” Kollaps
Ein Admin aktualisierte 20 Plugins gleichzeitig auf einem produktiven Jenkins-Master.
Das Ergebnis: Die Plugins hatten kreuzweise Abhängigkeiten. Nach dem Neustart war die Web-GUI nur noch ein Scherbenhaufen von Java-Fehlermeldungen. Da der Admin keine Snapshots (Artikel 656) gemacht hatte, verbrachte er das gesamte Wochenende mit der manuellen Suche nach den passenden .hpi Archiv-Versionen.
Lehre: Behandeln Sie den Jenkins-Master wie eine sensible Datenbank. Snapshots vor jedem Klick auf “Update” sind Pflicht!
# 6. Monitoring & Reporting
Build-Metriken.
# Prometheus Metrics Plugin
Senden Sie Daten an Ihr Grafana Dashboard (Artikel 698).
- KPI:
jenkins_job_duration_seconds. - KPI:
jenkins_executor_busy_count. (Hilft bei der Entscheidung, ob neue Proxmox-Worker-Knoten nötig sind).
# 7. Fazit & Empfehlung
Jenkins ist das “Power-User”-Tool für die Automatisierung.
- Empfehlung: Nutzen Sie Jenkins, wenn Sie hochkomplexe Workflows mit vielen Abhängigkeiten und verschiedenen Betriebssystemen haben.
- Wichtig: Sichern Sie den Jenkins-Zugriff via LDAP/Active Directory (Artikel 712) und nutzen Sie das Role-Based Strategy Plugin, um den Zugriff auf einzelne Jobs zu begrenzen.
# Anhang: Cheatsheet (Groovy Snippets)
| Snippet | Zweck |
|---|---|
params.MY_VAR |
Zugriff auf User-Eingaben |
env.BUILD_NUMBER |
Interne Build-ID nutzen |
error("Message") |
Job hart abbrechen |
archiveArtifacts |
Dateien für später sichern |