Handle apksigner 37 certificate output (#55) #87
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 |