diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 56b43a868..ba622c969 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -5,13 +5,23 @@ on: branches: [ master ] paths-ignore: - "**.md" + - ".idea/**" + - ".gitignore" + - ".gitmodules" + pull_request: branches: [ master ] +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: true + jobs: - ci-build: + build: runs-on: ubuntu-latest + timeout-minutes: 30 + steps: - name: Checkout code @@ -53,9 +63,62 @@ jobs: retention-days: 30 - name: Upload build reports - if: always() + if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 with: name: build-reports path: app/build/reports retention-days: 30 + + androidTest: + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + matrix: + api-level: [26, 33] + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - 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 + + - uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'zulu' + + - uses: gradle/actions/setup-gradle@v3 + + - uses: actions/cache@v4 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.api-level }} + + - name: create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.api-level }} + arch: x86_64 + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: echo "Generated AVD snapshot for caching." + + - uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.api-level }} + arch: x86_64 + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: ./gradlew connectedFdroidDebugAndroidTest