name: CI on: push: branches: [ main ] pull_request: branches: [ main ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: distribution: temurin java-version: '17' - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@v4 - name: Set up Android SDK uses: android-actions/setup-android@v3 - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Unit tests (JUnit 5) run: ./gradlew test --no-daemon --stacktrace - name: Assemble (debug) + compile instrumented tests # assembleDebugAndroidTest compiles the Compose UI test; it runs on a device via # connectedDebugAndroidTest (locally / on an emulator runner), not in this build job. run: ./gradlew assembleDebug assembleDebugAndroidTest --no-daemon --stacktrace - name: Upload test reports if: always() uses: actions/upload-artifact@v4 with: name: test-reports path: '**/build/reports/tests/' if-no-files-found: ignore