# 🐧 [DevOps Engineer] — Schritt-für-Schritt Roadmap > **Stand:** 3. April 2026 > **Rolle:** Docker, CI/CD, Gradle, Security, Desktop-Packaging, Infrastruktur --- ## 🔴 Sprint A — Sofort (diese Woche) - [x] **A-1** | Docker-Compose-Setup auf aktuellen Stand bringen - [x] Alle Services (Backend, DB, Infra) in `docker-compose.yaml` / `dc-*.yaml` prüfen - [x] Sicherstellen: Lokale Entwicklungsumgebung startet mit einem einzigen Befehl - [x] Healthchecks für alle Services definieren Hinweise: - Ein-Kommando-Start (alle Profile): ```bash docker compose --profile all up -d ``` - Healthchecks ergänzt für: `api-gateway`, `ping-service`, `web-app`, `zipkin`. - `depends_on` vereinheitlicht: Keycloak wird von Backend-Services mit `service_healthy` abgewartet. --- ## 🟠 Sprint B — Kurzfristig (nächste Woche) - [x] **B-1** | CI/CD Pipeline für Compose Desktop Tests (headless) - [x] Gitea Actions Workflow angelegt: `.gitea/workflows/desktop-tests.yml` - [x] Headless-Umgebung: `xvfb-run` (1920x1080x24) für Compose Desktop Tests - [x] Gradle-Task integriert: `:frontend:shells:meldestelle-desktop:jvmTest` - [x] Build-Artefakte gespeichert: `frontend/shells/meldestelle-desktop/build/**` (JARs und Compose-Distributables) - [x] Fehlgeschlagene Tests brechen Build ab (Default-Verhalten von Gradle `jvmTest`) Hinweise: - CI nutzt JDK 21 (Temurin), Gradle-Cache (`actions/cache`). - Artefakte: Upload via `actions/upload-artifact`. Pfade siehe Workflow. - Siehe: `docs/01_Architecture/Gitea/Enable_Gitea_Actions_Cache_to_Accelerate_CI_CD.md` für Runner-Cache. - [x] **B-2** | Gradle-Build-Optimierungen - [x] Build-Cache aktiv: `org.gradle.caching=true` (in `gradle.properties`) - [x] Parallele Builds aktiv: `org.gradle.parallel=true` (in `gradle.properties`) - [x] Headless-Flag gesetzt: `-Djava.awt.headless=true` (in `org.gradle.jvmargs`) - [x] Wrapper aktualisiert: Gradle `9.4.0` (kompatibel mit aktuellem Setup) --- ## 🟡 Sprint C — Mittelfristig (in 2 Wochen) - [ ] **C-1** | Desktop-App Packaging konfigurieren - [ ] `compose.desktop.nativeDistributions` in `build.gradle.kts` konfigurieren - [ ] Windows: `.msi`-Installer bauen - [ ] Linux: `.deb`-Paket bauen - [ ] macOS: `.dmg`-Image bauen (falls erforderlich) - [ ] App-Icon und Metadaten (Name, Version, Publisher) eintragen - [ ] Testinstallation auf Ziel-Betriebssystem durchführen - [ ] **C-2** | Semantic Versioning einführen - [ ] Versionierungsschema definieren: `MAJOR.MINOR.PATCH` - [ ] Gemeinsame Versions-Quelle für Client (Frontend) und Server (Backend) festlegen - [ ] Git-Tagging-Strategie definieren (`v1.0.0`, `v1.0.0-backend`, etc.) - [ ] Release-Tagging in CI/CD-Pipeline integrieren - [ ] `CHANGELOG.md` Vorlage anlegen - [ ] **C-3** | Produktions-Deployment vorbereiten - [ ] Reverse-Proxy-Konfiguration (Nginx / Traefik) für Backend prüfen - [ ] HTTPS-Zertifikat-Management dokumentieren - [ ] Backup-Strategie für Produktionsdatenbanken definieren --- ## ⏸️ Zurückgestellt > ⏸️ **USB-Stick Fallback** — Separate Besprechung zu einem späteren Zeitpunkt > ⏸️ **Web-App Deployment** — Wird erst nach Desktop-App (Sprint A+B) gestartet --- ## 📌 Abhängigkeiten | Warte auf | Von wem | |-------------------------|------------------| | Headless-Test-Strategie | 🧐 QA Specialist | | Meine Aufgabe | Ermöglicht wem | |---------------------------|----------------------------------------| | CI/CD Pipeline (B-1) | 🧐 QA: Automatisierte Test-Ausführung | | Desktop-Packaging (C-1) | Alle: Auslieferbare Desktop-App | | Semantic Versioning (C-2) | Alle: Koordiniertes Release-Management |