name: Android Build on: push: branches: [ main ] pull_request: concurrency: group: build-${{ github.ref }} cancel-in-progress: true jobs: build: name: Build apk and run tests runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set Up JDK 17 uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: validate-wrappers: true gradle-home-cache-cleanup: true - name: Build Project with gradle run: ./gradlew assembleDebug - name: Run Local Tests run: ./gradlew test - name: Lint Checks run: ./gradlew ktlintCheck # Upload all build artifacts in separate steps. This can be shortened once https://github.com/actions/upload-artifact/pull/354 is merged. - name: Upload artifact nextplayer-universal-debug.apk uses: actions/upload-artifact@v4 with: name: nextplayer-universal-debug.apk path: ./app/build/outputs/apk/debug/app-universal-debug.apk - name: Upload artifact nextplayer-arm64-v8a-debug.apk uses: actions/upload-artifact@v4 with: name: nextplayer-arm64-v8a-debug.apk path: ./app/build/outputs/apk/debug/app-arm64-v8a-debug.apk - name: Upload artifact nextplayer-armeabi-v7a-debug.apk uses: actions/upload-artifact@v4 with: name: nextplayer-armeabi-v7a-debug.apk path: ./app/build/outputs/apk/debug/app-armeabi-v7a-debug.apk - name: Upload artifact nextplayer-x86_64-debug.apk uses: actions/upload-artifact@v4 with: name: nextplayer-x86_64-debug.apk path: ./app/build/outputs/apk/debug/app-x86_64-debug.apk - name: Upload artifact nextplayer-x86-debug.apk uses: actions/upload-artifact@v4 with: name: nextplayer-x86-debug.apk path: ./app/build/outputs/apk/debug/app-x86-debug.apk - name: Upload build reports if: always() uses: actions/upload-artifact@v4 with: name: build-reports path: app/build/reports androidTest: needs: build runs-on: ubuntu-latest timeout-minutes: 55 strategy: matrix: api-level: [ 26, 30 ] steps: - name: Delete unnecessary tools 🔧 uses: jlumbroso/free-disk-space@v1.3.1 with: android: false # Don't remove Android tools tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY" dotnet: true # rm -rf /usr/share/dotnet haskell: true # rm -rf /opt/ghc... swap-storage: true # rm -f /mnt/swapfile (4GiB) docker-images: false # Takes 16s, enable if needed in the future large-packages: false # includes google-cloud-sdk and it's slow - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm ls /dev/kvm - name: Checkout uses: actions/checkout@v4 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: validate-wrappers: true gradle-home-cache-cleanup: true - name: Build projects and run instrumentation tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} arch: x86_64 disable-animations: true disk-size: 6000M heap-size: 600M script: ./gradlew connectedCheck --daemon - name: Upload test reports if: always() uses: actions/upload-artifact@v4 with: name: test-reports-${{ matrix.api-level }} path: '*/build/reports/androidTests'