name: Desktop CI — Headless Tests & Build on: # Nur ausführen, wenn explizit das Desktop-Shell-Modul geändert wurde push: branches: [ main, master ] paths: - 'frontend/shells/meldestelle-desktop/**' - '.gitea/workflows/desktop-tests.yml' pull_request: branches: [ main, master ] paths: - 'frontend/shells/meldestelle-desktop/**' # Manuell startbar, falls benötigt workflow_dispatch: jobs: desktop-tests: # Komplett deaktivierbar über Repo-Variable: Settings → Variables → DESKTOP_CI_ENABLED=true # Zusätzlich: Für Plan‑B‑Builds überspringen, wenn Commit-Message [planb] enthält if: ${{ vars.DESKTOP_CI_ENABLED == 'true' && !contains(github.event.head_commit.message, '[planb]') }} 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 xauth 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