Improve android.yml to accelerate the CI jobs #876
This file contains 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
name: Android CI | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Cache Gradle dependencies | |
uses: gradle/actions/setup-gradle@v3 | |
- name: Run Checks | |
run: ./gradlew check --stacktrace | |
paparazi-screenshot-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Cache Gradle dependencies | |
uses: gradle/actions/setup-gradle@v3 | |
- name: Run Paparazzi Screenshot Tests | |
run: ./gradlew :showkase-screenshot-testing-paparazzi-sample:verifyPaparazziDebug -PuseKsp=true --stacktrace | |
- name: Upload Screenshot Test Report | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: reports | |
path: showkase-screenshot-testing-paparazzi-sample/build/reports/tests/testDebugUnitTest/ | |
retention-days: 1 | |
- name: Upload Screenshot Failure Differences | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: reports | |
path: showkase-screenshot-testing-paparazzi-sample/out/failures/ | |
retention-days: 1 | |
ui-testing: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
api-level: [ 26, 29 ] | |
target: [ default, google_apis ] | |
include: | |
- api-level: 26 | |
target: default | |
- api-level: 29 | |
target: google_apis | |
env: | |
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- 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: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Cache Gradle dependencies | |
uses: gradle/actions/setup-gradle@v3 | |
- name: AVD cache | |
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 }} | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: false | |
script: echo "Generated AVD snapshot for caching." | |
- name: Start emulator and run UI Tests w/ KAPT | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
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 connectedCheck --no-daemon --stacktrace | |
- name: Start emulator and run UI Tests w/ KSP | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
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 connectedCheck --no-daemon --stacktrace -PuseKsp=true | |
- name: Run Screenshot Tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
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 executeScreenshotTests -PdirectorySuffix=Api${{ matrix.api-level }} -PprintBase64 | |
- name: Upload screenshot testing report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reports-${{ matrix.api-level }}-${{ matrix.target }} | |
path: sample/build/reports/shot/debug/Api${{ matrix.api-level }}/verification/ | |
retention-days: 1 | |
# Uncomment the jobs below if you want to generate and record screenshots. Once you download the | |
# artifact, place them under sample/screenshots/debug/ | |
# - name: Record screenshots | |
# uses: reactivecircus/android-emulator-runner@v2 | |
# with: | |
# api-level: ${{ matrix.api-level }} | |
# 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 executeScreenshotTests -PdirectorySuffix=Api${{ matrix.api-level }} -Precord | |
# | |
# - name: Upload screenshots in an artifact | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: Api${{ matrix.api-level }} | |
# path: sample/screenshots/debug/Api${{ matrix.api-level }} | |
# retention-days: 1 |