name: Build PR

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on: [pull_request]

jobs:
  build:
    name: Build app
    runs-on: ubuntu-latest

    steps:
      - name: Clone repo
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Android SDK
        run: |
          ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3"

      - name: Setup Gradle
        uses: null2264/actions/gradle-setup@a4d662095a2f2af1ed24f1228eb6e55b0f9f1f29
        with:
          java: 17
          distro: adopt

      - name: Copy CI gradle.properties
        run: |
          mkdir -p ~/.gradle
          cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Build and run tests
        run: ./gradlew assembleStandardRelease testReleaseUnitTest testStandardReleaseUnitTest

      - name: Publish test report
        uses: mikepenz/action-junit-report@v5
        if: success() || failure()
        with:
          include_passed: true
          detailed_summary: true
          report_paths: '**/build/test-results/test*/TEST-*.xml'

      - name: Upload R8 APK to artifact
        uses: actions/upload-artifact@v4
        with:
          name: arm64-v8a-${{ github.sha }}
          path: app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned.apk

      - name: Upload R8 mapping
        uses: actions/upload-artifact@v4
        with:
          name: mapping-${{ github.sha }}
          path: app/build/outputs/mapping/standardRelease
