[STAD-578] Remove flavors and fix emulator in CI #283
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
# This workflow ensures the connected tests keep working | |
# | |
# @author Armin Schnabel | |
# @version 1.0.0 | |
# @since 7.4.0 | |
name: Gradle Connected Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
androidTest: | |
# Faster, but MacOS costs 8 ct/min instead of 0.8 ct/min of on Linux. | |
# Unfortunately, `DataCapturingServiceTest.testDisconnectReconnect` fails on linux stack. | |
# But as this is a public repository, Github Actions are currently free of charge. | |
#runs-on: macos-latest # as recommended in `actions/android-emulator-runner` | |
# But we had to add `free-disk-space` to fix emulator flakiness. It only runs on ubuntu. | |
runs-on: ubuntu-latest | |
timeout-minutes: 55 | |
strategy: | |
matrix: | |
api-level: [ 28 ] | |
steps: | |
# From https://github.com/android/nowinandroid/pull/1219/files to fix flaky emulator start | |
# See https://github.com/ReactiveCircus/android-emulator-runner/issues/324#issuecomment-1998737488 | |
- name: Delete unnecessary tools 🔧 | |
uses: jlumbroso/[email protected] | |
with: | |
android: false # Keep Don't remove Android tools | |
tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY" | |
dotnet: true # rm -rf /usr/share/dotnet | |
haskell: true # rm -rf /opt/ghc... | |
swap-storage: true # rm -f /mnt/swapfile (4GiB) | |
docker-images: false # Takes 16s (`nowinandroid`), enable if needed in the future | |
large-packages: false # includes google-cloud-sdk and it's slow | |
# Set up KVM permissions to enable efficient Android emulator runs by modifying udev rules for universal access. | |
# From https://github.com/android/nowinandroid/blob/main/.github/workflows/Build.yaml#L142 | |
- name: Enable KVM group perms | |
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 | |
ls /dev/kvm | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
- name: Add gradle.properties | |
run: | | |
# Use a personal read token to install the Cyface Utils package | |
cp gradle.properties.template gradle.properties | |
echo "githubUser=${{ secrets.GH_READ_ACCOUNT }}" >> gradle.properties | |
echo "githubToken=${{ secrets.GH_READ_TOKEN }}" >> gradle.properties | |
# Not executing build here on MacOS stack (10x costs, if private repository) | |
#- name: Build with Gradle | |
# run: ./gradlew build | |
# Add caching to speed up connected tests below (see `actions/android-emulator-runner`) | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v3 | |
#- name: AVD cache | |
# uses: actions/cache@v3 | |
# 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 | |
# disable-animations: true | |
# script: echo "Generated AVD snapshot for caching." | |
# From https://github.com/android/nowinandroid/blob/main/.github/workflows/Build.yaml#L142 | |
- name: Build projects before running emulator | |
run: ./gradlew packageDebugAndroidTest | |
# Only execute mock tests to exclude `@FlakyTest`s (instead of running `connectedCheck`) | |
- name: Connected tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
# From https://github.com/android/nowinandroid >>> | |
arch: x86_64 | |
disable-animations: true | |
disk-size: 6000M | |
heap-size: 600M | |
# <<<< | |
# default options are: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim | |
# Action recommendation: -no-snapshot-save -camera-back none | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
#avd-name: ubuntu-avd-28 | |
#force-avd-creation: false | |
script: ./gradlew :persistence:connectedDebugAndroidTest :datacapturing:connectedDebugAndroidTest :synchronization:connectedDebugAndroidTest --daemon | |
# To execute a single test class | |
#script: ./gradlew :datacapturing:connectedCyfaceMockDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=de.cyface.datacapturing.DataCapturingServiceTest --daemon | |
# From https://github.com/android/nowinandroid/blob/main/.github/workflows/Build.yaml#L142 | |
- name: Upload test reports | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-reports-${{ matrix.api-level }} | |
path: '**/build/reports/androidTests' |