Create ktlint.yml #1
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, pull_request, workflow_dispatch] | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Run tests and generate APK | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
- name: Cache packages | |
id: cache-packages | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} | |
restore-keys: gradle-packages-${{ runner.os }} | |
- name: Access test login credentials | |
run: | | |
echo "TEST_USER_NAME=${{ secrets.TEST_USER_NAME }}" >> local.properties | |
echo "TEST_USER_PASSWORD=${{ secrets.TEST_USER_PASSWORD }}" >> local.properties | |
- name: AVD cache | |
if: github.event_name != 'pull_request' | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-tablet-api-24 | |
- name: Create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' && github.event_name != 'pull_request' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 24 | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
script: echo "Generated AVD snapshot for caching." | |
- name: Run Instrumentation tests | |
if: github.event_name != 'pull_request' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 24 | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
profile: Nexus 10 | |
script: | | |
adb shell content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0 | |
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0 | |
adb emu geo fix 37.422131 -122.084801 | |
./gradlew connectedBetaDebugAndroidTest --stacktrace | |
- name: Run Unit tests with unified coverage | |
if: github.event_name != 'pull_request' | |
run: ./gradlew -Pcoverage testBetaDebugUnitTestUnifiedCoverage --stacktrace | |
- name: Run Unit tests without unified coverage | |
if: github.event_name == 'pull_request' | |
run: ./gradlew -Pcoverage testBetaDebugUnitTestCoverage --stacktrace | |
- name: Upload Test Report to Codecov | |
if: github.event_name != 'pull_request' | |
run: | | |
curl -Os https://uploader.codecov.io/latest/linux/codecov | |
chmod +x codecov | |
./codecov -f "app/build/reports/jacoco/testBetaDebugUnitTestUnifiedCoverage/testBetaDebugUnitTestUnifiedCoverage.xml" -Z | |
- name: Generate betaDebug APK | |
run: bash ./gradlew assembleBetaDebug --stacktrace | |
- name: Upload betaDebug APK | |
uses: actions/upload-artifact@v3 | |
with: | |
name: betaDebugAPK | |
path: app/build/outputs/apk/beta/debug/app-*.apk | |
- name: Generate prodDebug APK | |
run: bash ./gradlew assembleProdDebug --stacktrace | |
- name: Upload prodDebug APK | |
uses: actions/upload-artifact@v3 | |
with: | |
name: prodDebugAPK | |
path: app/build/outputs/apk/prod/debug/app-*.apk |