meldestelle/docs/04_Agents/Roadmaps/DevOps_Roadmap.md

3.7 KiB

🐧 [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)

  • A-1 | Docker-Compose-Setup auf aktuellen Stand bringen

    • Alle Services (Backend, DB, Infra) in docker-compose.yaml / dc-*.yaml prüfen
    • Sicherstellen: Lokale Entwicklungsumgebung startet mit einem einzigen Befehl
    • Healthchecks für alle Services definieren

    Hinweise:

    • Ein-Kommando-Start (alle Profile):
      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)

  • B-1 | CI/CD Pipeline für Compose Desktop Tests (headless)

    • Gitea Actions Workflow angelegt: .gitea/workflows/desktop-tests.yml
    • Headless-Umgebung: xvfb-run (1920x1080x24) für Compose Desktop Tests
    • Gradle-Task integriert: :frontend:shells:meldestelle-desktop:jvmTest
    • Build-Artefakte gespeichert: frontend/shells/meldestelle-desktop/build/** (JARs und Compose-Distributables)
    • 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.
  • B-2 | Gradle-Build-Optimierungen

    • Build-Cache aktiv: org.gradle.caching=true (in gradle.properties)
    • Parallele Builds aktiv: org.gradle.parallel=true (in gradle.properties)
    • Headless-Flag gesetzt: -Djava.awt.headless=true (in org.gradle.jvmargs)
    • 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