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