Zum Inhalt

Jenkins Example ReadMe File

Dateiname: README-jenkins-setup.md


Jenkins Pipeline für Spring Boot (RefCard01)

Diese Anleitung zeigt Ihnen in Jenkins (Docker) eine komplette CI/CD-Chain für ein Spring-Boot-Projekt RefCard01:

  • Build & Test mit Maven (Java 17)
  • Docker-Image bauen
  • Push zu Container Registry (optional)
  • Deployment via SSH & docker compose (optional)

1) Jenkins-Container mit Docker-Zugriff starten

Falls bereits vorhanden, sicherstellen, dass Docker CLI im Jenkins-Container verfügbar ist und der Docker Socket gemountet wird.

docker run -d --name jenkins       -p 8080:8080 -p 50000:50000       -v jenkins_home:/var/jenkins_home       -v /var/run/docker.sock:/var/run/docker.sock       -v /usr/bin/docker:/usr/bin/docker       jenkins/jenkins:lts

Alternativ: Docker CLI im Container nachinstallieren (apk add docker-cli bzw. apt-get install docker.io je nach Base-Image).

2) Benötigte Jenkins-Plugins

  • Pipeline (Workflow Aggregator)
  • Git & Git client
  • Docker Pipeline (oder Docker Commons + CLI)
  • Credentials Binding
  • SSH Agent
  • Optional: Blue Ocean

3) Credentials in Jenkins anlegen

  • docker-registry-cred: Username/Passwort oder Token für Ihre Registry-Login
  • docker-registry-url (optional als Secret Text, z. B. https://ghcr.io)
  • deploy-ssh: SSH Private Key für den Deploy-Server

4) Dateien in Ihr Repository legen

  • Jenkinsfile (aus diesem Paket)
  • Dockerfile (falls noch nicht existiert)
  • docker-compose.yml (für Deployment auf Zielhost)

5) Pipeline-Job anlegen

  • New ItemPipeline oder Multibranch Pipeline
  • SCM auf das RefCard01-Repo zeigen lassen
  • Falls Parameter gewünscht (Registry/Host): im Job die Default-Werte setzen

6) Variablen / Parameter

  • REGISTRY: Prefix für das Image (z. B. ghcr.io/yourorg oder docker.io/youruser). Leer lassen ⇒ nur lokal bauen.
  • VERSION: Image-Tag. Leer ⇒ automatisch aus Git (Tag/Commit).
  • DEPLOY_HOST: SSH-Hostname für Deployment. Leer ⇒ kein Remote-Deploy.
  • DEPLOY_PATH: Zielpfad auf dem Host (Standard /opt/refcard01).

7) Pipeline-Verlauf

  1. Checkout: holt Code, ermittelt Version
  2. Build & Test (Maven): mvn verify in Container maven:3.9-eclipse-temurin-17
  3. Build Docker Image: baut Image aus Dockerfile
  4. Login & Push (optional): docker login + docker push
  5. Deploy (SSH) (optional): kopiert docker-compose.yml, setzt DOCKER_IMAGE und startet docker compose up -d

8) Deployment-Host vorbereiten

  • Docker + Docker Compose V2 installiert (docker compose version)
  • SSH-Zugriff vom Jenkins-Server möglich
  • Zielpfad existent oder wird von Pipeline erstellt

9) Troubleshooting

  • Permission denied /var/run/docker.sock → Host: chmod/chown Socket oder Jenkins-User zur docker-Gruppe hinzufügen.
  • docker not found → Docker CLI im Jenkins-Container installieren oder /usr/bin/docker mounten.
  • Cannot connect to the Docker daemon → Socket richtig gemountet? Docker auf Host läuft?
  • Auth failed (push) → Credentials/Registry-URL prüfen.
  • Port 8080 belegt → compose-Port anpassen.