Merge pull request #561 from kizitonwose/multiplatform #89
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: Check | |
on: | |
workflow_dispatch: | |
pull_request: | |
# Run whenever we update this file | |
push: | |
paths: | |
- '.github/workflows/check.yml' | |
jobs: | |
ktlint: | |
name: Ktlint | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches/ | |
~/.gradle/wrapper/ | |
key: cache-gradle-${{ hashFiles('**/*.gradle', '**/gradle-wrapper.properties') }} | |
restore-keys: cache-gradle- | |
- name: Validate Gradle | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Run Ktlint | |
run: ./gradlew lintKotlin | |
api-check: | |
name: API Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-home-cache-cleanup: true | |
- run: ./gradlew apiCheck | |
unit-tests: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches/ | |
~/.gradle/wrapper/ | |
key: cache-gradle-${{ hashFiles('**/*.gradle', '**/gradle-wrapper.properties') }} | |
restore-keys: cache-gradle- | |
- name: Validate Gradle | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Unit tests | |
run: ./gradlew testDebugUnitTest | |
instrumentation-tests: | |
name: Instrumentation tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: true | |
matrix: | |
# api-level: [ 24, 29, 33 ] # 33 is currently unreliable. | |
api-level: [ 24, 29 ] | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches/ | |
~/.gradle/wrapper/ | |
key: cache-gradle-${{ hashFiles('**/*.gradle', '**/gradle-wrapper.properties') }} | |
restore-keys: cache-gradle- | |
- name: Validate Gradle | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
# API 32+ emulators have no `default` system images. | |
- name: Determine emulator target | |
id: determine-target | |
env: | |
API_LEVEL: ${{ matrix.api-level }} | |
run: | | |
TARGET="default" | |
if [ "$API_LEVEL" -ge "32" ]; then | |
TARGET="google_apis" | |
fi | |
echo "::set-output name=TARGET::$TARGET" | |
# API 30+ emulators only have x86_64 system images. | |
- name: Determine emulator arch | |
id: determine-arch | |
env: | |
API_LEVEL: ${{ matrix.api-level }} | |
run: | | |
ARCH="x86" | |
if [ "$API_LEVEL" -ge "30" ]; then | |
ARCH="x86_64" | |
fi | |
echo "::set-output name=ARCH::$ARCH" | |
- 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: Instrumentation tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ steps.determine-target.outputs.TARGET }} | |
arch: ${{ steps.determine-arch.outputs.ARCH }} | |
script: ./gradlew connectedDebugAndroidTest |