Fix emulator target #2
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: CI - Test Runner | |
# Run the workflow when commits are pushed on main or when a PR is modified | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
jobs: | |
ci: | |
name: CI | |
# Execute the CI on the course's runners | |
runs-on: ubuntu-latest | |
steps: | |
# First step : Checkout the repository on the runner | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of Sonar analysis (if we use Sonar Later) | |
# Kernel-based Virtual Machine (KVM) is an open source virtualization technology built into Linux. Enabling it allows the Android emulator to run faster. | |
- 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 | |
- name: Setup JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: "temurin" | |
java-version: "17" | |
# Caching is a very useful part of a CI, as a workflow is executed in a clean environment every time, | |
# this means that one would need to re-download and re-process gradle files for every run. Which is very time consuming. | |
# | |
# To avoid that, we cache the the gradle folder to reuse it later. | |
- name: Gradle cache | |
uses: gradle/actions/setup-gradle@v3 | |
# Cache the Emulator, if the cache does not hit, create the emulator | |
- name: AVD cache | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-34 | |
- 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: 34 | |
target: google_apis | |
arch: x86_64 | |
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: Grant execute permission for gradlew | |
run: | | |
chmod +x ./gradlew | |
# Check formatting | |
- name: KTFmt Check | |
run: | | |
./gradlew ktfmtCheck | |
# This step runs gradle commands to build the application | |
- name: Assemble | |
run: | | |
# To run the CI with debug information, add --info | |
./gradlew assemble lint --parallel --build-cache | |
# Run Unit tests | |
- name: Run tests | |
run: | | |
# To run the CI with debug information, add --info | |
./gradlew check --parallel --build-cache | |
# Run connected tests on the emulator | |
- name: run tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 34 | |
target: google_apis | |
arch: x86_64 | |
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 --parallel --build-cache | |
# This step generates the coverage report which will be uploaded to sonar | |
- name: Generate coverage | |
run: | | |
./gradlew jacocoTestReport | |
# Upload the various reports to sonar | |
- name: Upload report to SonarCloud | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: ./gradlew sonar --info --parallel --build-cache |