name: verify on: push: branches: [main] pull_request: schedule: # Nightly, because the release build is the one check nothing else performs: R8 has already # hidden a real defect here once (a video decoder reached only through a ServiceLoader entry), # and it was invisible to the unit tests, to lint and to the debug APK. - cron: '17 3 * * *' workflow_dispatch: concurrency: group: verify-${{ github.ref }} cancel-in-progress: true jobs: gate: if: github.event_name != 'schedule' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: temurin # detekt 1.23 cannot start on JDK 25 (it fails to parse the version string), so the whole # job stays on 21. The sources still target Java 17, which is what compileOptions asks for. java-version: '21' - uses: android-actions/setup-android@v3 - uses: gradle/actions/setup-gradle@v4 - run: ./tools/verify.sh release: if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: temurin java-version: '21' - uses: android-actions/setup-android@v3 - uses: gradle/actions/setup-gradle@v4 - run: ./tools/verify.sh --release # The mapping is what turns a stack trace from a release crash into a line of Kotlin. It is # only worth keeping if it belongs to the build that shipped, which is why it is uploaded # rather than committed. - uses: actions/upload-artifact@v4 if: always() with: name: r8-mapping path: app/build/outputs/mapping/release/mapping.txt if-no-files-found: ignore