name: Android CI on: workflow_dispatch: push: branches: - main - staging - trying pull_request: branches: - main permissions: actions: none checks: none contents: read deployments: none discussions: none id-token: none issues: none packages: none pages: none pull-requests: none repository-projects: none security-events: none statuses: none env: JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 jobs: build: runs-on: ubuntu-latest strategy: matrix: api-level: [ 21, 34 ] steps: - uses: actions/checkout@v4.2.2 - name: Fail on bad translations run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi - uses: gradle/actions/wrapper-validation@v4 - name: set up OpenJDK 17 run: | sudo apt-get update sudo apt-get install -y openjdk-17-jdk-headless sudo update-alternatives --auto java - name: Build run: ./gradlew assembleRelease - name: Check lint run: ./gradlew lintRelease - name: Run unit tests run: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; } - name: Enable KVM 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 - name: Run instrumented tests uses: ReactiveCircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} arch: x86_64 script: ./gradlew connectedCheck - name: SpotBugs run: ./gradlew spotbugsRelease - name: Archive test results if: always() uses: actions/upload-artifact@v4.4.3 with: name: test-results-api${{ matrix.api-level }} path: app/build/reports