Skip to content

S2.03b: migrate actions settings to AndroidX #99

S2.03b: migrate actions settings to AndroidX

S2.03b: migrate actions settings to AndroidX #99

Workflow file for this run

# SPDX-License-Identifier: Apache-2.0
name: Quality gates
on:
pull_request:
branches:
- v2
push:
branches:
- v2
workflow_dispatch:
permissions:
contents: read
concurrency:
group: quality-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
prek:
name: prek
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Run repository checks
uses: j178/prek-action@v2
gradle-wrapper:
name: Gradle wrapper
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version-file: .java-version
- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6
- name: Bootstrap Gradle
run: ./gradlew --version --no-daemon
- name: Resolve target Android Gradle Plugin
run: ./gradlew -p verification/agp-resolution resolveAgp --no-daemon
android-build:
name: Android debug and release
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version-file: .java-version
- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: >-
platform-tools
platforms;android-37.0
build-tools;37.0.0
ndk;29.0.14206865
cmake;3.22.1
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
- name: Verify resolved AndroidX dependencies
run: scripts/verify-resolved-androidx.sh
- name: Assemble debug and unsigned release APKs
run: ./gradlew :app:assembleDebug :app:assembleRelease --no-daemon --stacktrace
- name: Verify packaged native ABIs
run: >-
scripts/verify-apk-native-libs.sh
app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/release/app-release-unsigned.apk
- name: Verify packaged application identity
run: >-
scripts/verify-apk-identity.sh
app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/release/app-release-unsigned.apk
- name: Enforce release APK size budget
run: >-
scripts/verify-apk-size.sh
app/build/outputs/apk/release/app-release-unsigned.apk
3400000
- name: Upload APKs
uses: actions/upload-artifact@v7
with:
name: hackers-keyboard-apks-${{ github.sha }}
path: app/build/outputs/apk/**/*.apk
if-no-files-found: error
retention-days: 7
compression-level: 0
android-lint:
name: Android lint
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version-file: .java-version
- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: >-
platform-tools
platforms;android-37.0
build-tools;37.0.0
ndk;29.0.14206865
cmake;3.22.1
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
- name: Run Android lint through prek
uses: j178/prek-action@v2
with:
extra-args: --hook-stage manual android-lint
- name: Upload Android lint reports
if: always()
uses: actions/upload-artifact@v7
with:
name: android-lint-diagnostics-${{ github.sha }}
path: app/build/reports/lint-results-debug.*
if-no-files-found: error
retention-days: 7
android-instrumentation:
name: Application and JNI smoke (API ${{ matrix.api }})
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
include:
- api: 24
- api: 37
task: pixel2Api37DebugAndroidTest
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version-file: .java-version
- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: >-
platform-tools
platforms;android-37.0
build-tools;37.0.0
ndk;29.0.14206865
cmake;3.22.1
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
- name: Enable KVM access
run: sudo chmod 666 /dev/kvm
- name: Run application and JNI smoke tests on API 24
if: matrix.api == 24
run: scripts/run-api24-connected-tests.sh
- name: Run application and JNI smoke tests on API 37
if: matrix.api == 37
run: >-
./gradlew :app:${{ matrix.task }}
--no-daemon
--stacktrace
-Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect
- name: Upload instrumentation results
if: always()
uses: actions/upload-artifact@v7
with:
name: application-jni-smoke-api-${{ matrix.api }}-${{ github.sha }}
path: |
app/build/reports/androidTests/connected/
app/build/reports/androidTests/managedDevice/
app/build/outputs/androidTest-results/connected/
app/build/outputs/androidTest-results/managedDevice/
if-no-files-found: warn
retention-days: 7