diff --git a/.gitea/workflows/desktop-tests.yml b/.gitea/workflows/desktop-tests.yml new file mode 100644 index 00000000..d4d42e3f --- /dev/null +++ b/.gitea/workflows/desktop-tests.yml @@ -0,0 +1,63 @@ +name: Desktop CI — Headless Tests & Build + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + desktop-tests: + name: Compose Desktop — Tests (headless) & Build + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup JDK 21 (Temurin) + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '21' + + - name: Gradle cache + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + .gradle + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'gradle.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Make gradlew executable + run: chmod +x ./gradlew + + - name: Show Gradle version + run: ./gradlew --version + + - name: Run Desktop tests headless (Xvfb) + env: + _JAVA_OPTIONS: -Djava.awt.headless=true + run: | + sudo apt-get update -y + sudo apt-get install -y Xvfb + xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" \ + ./gradlew :frontend:shells:meldestelle-desktop:jvmTest --stacktrace --no-daemon + + - name: Build Desktop shell (Release) + env: + _JAVA_OPTIONS: -Djava.awt.headless=true + run: | + ./gradlew :frontend:shells:meldestelle-desktop:build --stacktrace --no-daemon + + - name: Upload build artifacts (Desktop shell) + uses: actions/upload-artifact@v4 + with: + name: desktop-shell-build + path: | + frontend/shells/meldestelle-desktop/build/libs/**/*.jar + frontend/shells/meldestelle-desktop/build/compose*/** + if-no-files-found: warn diff --git a/docs/04_Agents/Roadmaps/DevOps_Roadmap.md b/docs/04_Agents/Roadmaps/DevOps_Roadmap.md index 18e719a2..19183f14 100644 --- a/docs/04_Agents/Roadmaps/DevOps_Roadmap.md +++ b/docs/04_Agents/Roadmaps/DevOps_Roadmap.md @@ -1,6 +1,6 @@ # 🐧 [DevOps Engineer] — Schritt-für-Schritt Roadmap -> **Stand:** 2. April 2026 +> **Stand:** 3. April 2026 > **Rolle:** Docker, CI/CD, Gradle, Security, Desktop-Packaging, Infrastruktur --- @@ -24,17 +24,23 @@ ## 🟠 Sprint B — Kurzfristig (nächste Woche) -- [ ] **B-1** | CI/CD Pipeline für Compose Desktop Tests (headless) - - [ ] GitHub Actions / Gitea Actions Workflow anlegen - - [ ] Headless-Umgebung für Compose Desktop Tests konfigurieren (Xvfb oder virtueller Framebuffer) - - [ ] Gradle-Task für Desktop-Tests in Pipeline integrieren - - [ ] Build-Artefakte (JAR / native Binaries) als Pipeline-Ausgabe speichern - - [ ] Fehlgeschlagene Tests als Build-Blocker konfigurieren +- [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`) -- [ ] **B-2** | Gradle-Build-Optimierungen - - [ ] Build-Cache aktivieren und prüfen - - [ ] Parallele Modul-Builds konfigurieren - - [ ] Gradle-Wrapper-Version auf aktuellen Stand bringen + 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) ---