Deployen Sie Ihre Java-Anwendung immer noch per SSH?
\n\nWenn Sie jemals ein Java-Projekt manuell in der Produktion eingerichtet haben – mvn clean install, scp auf den Server, Prozess beenden, neu starten – kennen Sie dieses Gefühl: Es funktioniert zwar irgendwie, aber jedes Deployment fühlt sich an wie ein Endgegner-Kampf. Ein vergessenes Flag, eine falsche Java-Version – und die Anwendung stürzt ab, während Sie um 3 Uhr morgens die Nachricht „Server antwortet nicht“ erhalten.
Heute schauen wir uns an, wie man einen CI/CD-Pipeline für Java von Grund auf aufbaut. Egal, ob Sie Spring Boot, Micronaut oder das gute alte Java EE verwenden – dieser Pipeline wird Ihre Nerven und Zeit schonen. Wir verwenden Jenkins, Maven, Docker und GitHub. Alles ist real: mit Code, Konfigurationen und Live-Beispielen.
\n\n\n\n
Was ist CI/CD und warum braucht ein Java-Entwickler das?
\n\nCI/CD (Continuous Integration / Continuous Delivery) ist nicht nur ein Modewort. Es ist ein Prozess, der Ihren Code von „mal eben schnell geschrieben“ in „läuft stabil auf dem Server“ verwandelt – ohne Ihr Zutun.
\n\n- \n
- Continuous Integration – Jeder Ihrer Commits wird automatisch gebaut und getestet. Fallen Tests durch, erfahren Sie das sofort, nicht erst eine Woche später. \n
- Continuous Delivery – Nach einem erfolgreichen Build wird der Code automatisch auf einem Test- oder Produktionsserver bereitgestellt. \n
Für Java ist das besonders wichtig: Build mit Maven/Gradle, Ausführen von Unit-Tests, Integrationstests, Code-Style-Prüfung – all das kann und sollte automatisiert werden. Sonst verschwenden Sie Stunden mit Routine, anstatt neue Features zu schreiben.
\n\n\n\n
Schritt 1. Umgebungsvorbereitung: Was wir brauchen
\n\nBevor wir den Pipeline schreiben, stellen wir sicher, dass wir alle Werkzeuge haben. Für unseren CI/CD-Pipeline für Java benötigen wir:
\n\n- \n
- GitHub (oder GitLab/Bitbucket) – Repository mit dem Code. \n
- Jenkins – Automatisierungsserver. Kann lokal oder auf einer VPS betrieben werden. \n
- Maven – Build-Tool für das Java-Projekt. \n
- Docker – Zur Containerisierung der Anwendung. \n
- Server (oder Cloud) – Wohin wir deployen werden. \n
Installieren wir Jenkins auf Ubuntu (wenn Sie ein anderes Betriebssystem haben – kein Problem, das Prinzip ist dasselbe):
\n\nsudo apt update\nsudo apt install openjdk-11-jdk\nwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -\nsudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'\nsudo apt update\nsudo apt install jenkins\nsudo systemctl start jenkins\n\n\nÖffnen Sie nach der Installation http://ihr-server:8080 und führen Sie die Ersteinrichtung durch. Vergessen Sie nicht, die Plugins zu installieren: Git, Maven Integration, Docker Pipeline, Blue Ocean (für eine schöne Oberfläche).
\n\n
Schritt 2. Ein einfaches Java-Projekt schreiben (Spring Boot)
\n\nDamit wir etwas zum Üben haben, erstellen wir einen minimalen Spring Boot-Dienst. Wenn Sie bereits ein Projekt haben, überspringen Sie diesen Schritt einfach.
\n\n// Main.java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class DemoApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n\n @GetMapping("/")\n public String hello() {\n return "Hello from CI/CD pipeline!";\n }\n}\n\n\nVergessen Sie nicht die pom.xml mit den Abhängigkeiten. Ein üblicher Spring Boot Starter + Maven Compiler Plugin. Das ist unser Versuchskaninchen.
\n\n
Schritt 3. Jenkinsfile erstellen – das Herz des Pipelines
\n\nJenkinsfile ist ein deklaratives