name: Build on: push: branches: - main pull_request: concurrency: group: build-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest timeout-minutes: 60 steps: - name: Checkout uses: actions/checkout@v3 - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Setup Gradle uses: gradle/gradle-build-action@v2 - name: Check spotless run: ./gradlew spotlessCheck --stacktrace - name: Check lint run: ./gradlew lintDebug --stacktrace - name: Build all build type and flavor permutations run: ./gradlew assemble --stacktrace - name: Run local tests run: ./gradlew testDemoDebug testProdDebug --stacktrace - name: Upload build outputs (APKs) uses: actions/upload-artifact@v3 with: name: build-outputs path: app/build/outputs - name: Upload build reports if: always() uses: actions/upload-artifact@v3 with: name: build-reports path: app/build/reports androidTest: needs: build runs-on: macOS-latest # enables hardware acceleration in the virtual machine timeout-minutes: 45 strategy: matrix: api-level: [23, 26, 30] steps: - name: Checkout uses: actions/checkout@v3 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Setup Gradle uses: gradle/gradle-build-action@v2 - name: Run instrumentation tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} arch: x86_64 disable-animations: true disk-size: 1500M heap-size: 512M script: ./gradlew connectedProdDebugAndroidTest -x :benchmark:connectedProdBenchmarkAndroidTest --stacktrace - name: Upload test reports if: always() uses: actions/upload-artifact@v3 with: name: test-reports path: '*/build/reports/androidTests'