name: Test/Build Android

on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 17

      - name: Cache gradle
        uses: actions/cache@v3
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Linter (gradle)
        run: ./gradlew spotlessCheck

      - name: Test (gradle)
        run: ./gradlew test --no-daemon

      - name: Android Test Report
        uses: asadmansr/android-test-report-action@v1.2.0
        if: ${{ always() }} # IMPORTANT: run Android Test Report regardless

      - name: Build APK (gradle)
        run: ./gradlew assembleDebug --no-daemon

      - name: Upload APK
        uses: actions/upload-artifact@v2
        with:
          name: Debug APK
          path: app/build/outputs/apk/debug/app-debug.apk

      - name: Upload Test Results
        uses: actions/upload-artifact@v2
        with:
          name: Build Reports
          path: app/build/reports

