Begriff
Jenkins
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Stell dir vor, du hast einen Butler. Jedes Mal, wenn du neuen Code speicherst, rufst du ihn: "Butler, bitte teste mein Programm. Wenn alles klappt, lade es auf den Server." Dieser Butler heißt Jenkins. Er ist ein Programm (ein Server), der rund um die Uhr wartet. Er automatisiert die langweilige Arbeit (Kompilieren, Testen, Deployen), damit Entwickler sich auf das Programmieren konzentrieren können.
Merksatz: Ein Open-Source-Automatisierungsserver, der Softwareprojekte kontinuierlich baut, testet und bereitstellt (CI/CD).
Jenkins ist der "Opa" der CI/CD-Tools (gibt es seit 2004). Es ist extrem mächtig, aber nicht hübsch. Man steuert ihn über eine Webseite. Du erstellst einen "Job" oder eine "Pipeline" (ein Skript):
git clone(Code holen).npm install(Abhängigkeiten laden).npm test(Tests laufen lassen).
1. Plugins
Die Stärke (und Schwäche) von Jenkins: Es gibt für alles ein Plugin. "Du willst eine SMS schicken, wenn der Build fehlschlägt?" -> Plugin. "Du willst Docker-Container bauen?" -> Plugin. Problem: Wenn du 500 Plugins hast und eins davon kaputtgeht (Update), steht die ganze Firma still ("Plugin Hell").
2. Jenkinsfile
Früher hat man Jobs in der GUI zusammengeklickt. Heute schreibt man ein Jenkinsfile und legt es zum Code (Infrastructure as Code). Vorteil: Wenn der Jenkins-Server abbrennt, installierst du einen neuen, er liest das Jenkinsfile und weiß sofort wieder, was er tun soll.
1. Master-Agent Architecture (Distributed Builds)
Ein Jenkins-Server gerät schnell an CPU/RAM-Grenzen, wenn 50 Entwicklerteams Java kompilieren.
Die Architektur trennt daher auf: Der Jenkins Controller (Master) orchestriert und hostet die UI, speichert Konfigs im XML, führt aber selbst keinen Build-Code aus.
Er delegiert an dedizierte Jenkins Agents (Worker Nodes). Diese Nodes können als flüchtige Docker-Container On-Demand via Kubernetes-Plugin in AWS hochgezogen werden (agent { kubernetes { ... } }). So skaliert Jenkins bei Lastspitzen auf 500 Compute-Maschinen, die nach dem Git-Push wieder völlig rückstandsfrei gelöscht werden.
2. Groovy DSL und Shared Libraries
Ein rohes Jenkinsfile wird in Groovy (einer JVM-Sprache verwandt mit Java) geschrieben.
Da Firmen hunderte Microservices mit je einem Jenkinsfile haben, führt das zu Redundanz (z. B. 100 mal das Setup für "SonarQube Scan" gepostet).
Die Masterclass sind Jenkins Shared Libraries. Das Ops-Team schreibt eine zentrale Pipeline-Logik (z.B. @Library('my-tools')_) in einem Repo. Die App-Entwickler includen diese Lib nur noch und tippen in ihr Jenkinsfile simpel buildCompanyStandard(). Ändert Ops den Security-Scan, greift das Update sofort global in den Pipelines aller 100 Microservices.
3. Plugin Hell und das "Configuration as Code" (JCasC) Plugin
Der Albtraum jedes Admins ist der Server-Neustart eines 5 Jahre alten Jenkins. Hunderte verstaubte XML-Settings von 80 manuell eingestellten Plugins (Git, AWS, Jira-Credentials) zerschellen. Das Rettungsschiff ist Jenkins Configuration as Code (JCasC). Es erlaubt, die Konfigurationen des gesamten Masters (Admin-Accounts, LDAP-Logins, Amazon Keys) via lesbarem YAML-File zu verwalten. Startet Jenkins neu, saugt es dieses YAML und konfiguriert sich blind selbst. Niemand klickt mehr in "Manage Jenkins"; das YAML lebt im Git und durchlebt Code-Reviews (Immutable Infrastructure).
Quick-Check
Ist Jenkins tot?
Viele sagen ja ("zu alt, zu kompliziert"). Moderne Tools wie GitLab CI oder GitHub Actions sind beliebter, weil sie einfacher sind. Aber Jenkins läuft noch in fast jedem großen Konzern (Legacy).Kostet Jenkins Geld?
Nein, es ist Open Source (kostenlos). Aber du brauchst einen Server, um es laufen zu lassen, und jemanden, der es wartet (das kostet Zeit/Geld).Warum das Butler-Logo?
Der Name kommt von einem echten Butler. Er soll dir dienen. (Früher hieß das Projekt "Hudson", musste aber wegen Markenstreit umbenannt werden).