chore(deps): update dependencies #340
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: | |
schedule: | |
- cron: '0 0 */5 * *' | |
push: | |
branches-ignore: | |
- website | |
jobs: | |
build: | |
runs-on: macos-14 | |
env: | |
ANDROID_KEYSTORE_FILE: '${{ github.workspace }}/release-key.jks' | |
CCACHE_DIR: ${{ github.workspace }}/.ccache | |
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion" | |
CCACHE_NOHASHDIR: true | |
CCACHE_MAXSIZE: 1G | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
submodules: 'recursive' | |
- name: Validate Gradle Wrapper | |
uses: gradle/actions/wrapper-validation@v3 | |
- name: Setup JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Prepare for building | |
id: prepare | |
run: | | |
chmod +x gradlew | |
base64 --decode <<< "${{ secrets.RELEASE_KEY }}" > "${{ env.ANDROID_KEYSTORE_FILE }}" | |
grep -q '[^[:space:]]' "${{ env.ANDROID_KEYSTORE_FILE }}" && echo release_key_exists=true >> $GITHUB_ENV || echo release_key_exists=false >> $GITHUB_ENV | |
- name: Cache dict.txt | |
uses: actions/cache@v4 | |
with: | |
path: | | |
app/dict.txt | |
key: ${{ runner.os }}-dict.txt | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-home-cache-cleanup: true | |
cache-overwrite-existing: true | |
cache-read-only: false | |
- name: Build APK | |
run: ./gradlew assembleRelease | |
env: | |
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} | |
RELEASE_KEY_STORE_PASSWORD: ${{ secrets.RELEASE_KEY_STORE_PASSWORD }} | |
RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} | |
release_key_exists: ${{ env.release_key_exists }} | |
- name: Upload built apk | |
env: | |
release_key_exists: ${{ env.release_key_exists }} | |
if: success() && env.release_key_exists == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: apk | |
path: | | |
app/build/outputs/apk/release/*.apk | |
- name: Upload signature | |
env: | |
release_key_exists: ${{ env.release_key_exists }} | |
if: success() && env.release_key_exists == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: signature_v4 | |
path: | | |
app/build/outputs/apk/release/*.idsig | |
- name: Upload mappings | |
env: | |
release_key_exists: ${{ env.release_key_exists }} | |
if: success() && env.release_key_exists == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mappings | |
path: app/build/outputs/mapping/release/ | |
- name: Generate summary | |
env: | |
release_key_exists: ${{ env.release_key_exists }} | |
if: success() && env.release_key_exists == 'true' | |
run: | | |
brew install gnu-sed | |
echo "|Channel|Filename|SHA256|" >> $GITHUB_STEP_SUMMARY | |
echo "|:--------:|:--------:|:----------|" >> $GITHUB_STEP_SUMMARY | |
filename=$(ls app/build/outputs/apk/release/*.apk) | |
sha=$(shasum -a 256 $filename | gsed 's/ .*//') | |
channel=$(echo $filename | gsed 's/.*_//g' | gsed 's/.apk//') | |
filename=$(basename $filename) | |
echo "APK_FILENAME=$filename" >> $GITHUB_OUTPUT | |
echo "SHA256=$sha" >> $GITHUB_OUTPUT | |
echo "CHANNEL=$channel" >> $GITHUB_OUTPUT | |
echo "|$(echo $channel | gsed 's/./\u&/')|$filename|\`$sha\`|\n\n" >> $GITHUB_STEP_SUMMARY | |
echo "BUILD_SUCCESS=true" >> $GITHUB_OUTPUT | |
- name: Setup Debug Session | |
if: success() != true | |
uses: mxschmitt/action-tmate@v3 | |
timeout-minutes: 15 | |
instrumentation-tests: | |
name: Instrumentation tests | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
env: | |
JAVA_TOOL_OPTIONS: -Xmx4g -XX:+UseParallelGC | |
ANDROID_KEYSTORE_FILE: '${{ github.workspace }}/release-key.jks' | |
strategy: | |
fail-fast: false # Allow tests to continue on other devices if they fail on one device. | |
matrix: | |
include: | |
# - api-level: 26 | |
# os: ubuntu-latest | |
# target: google_apis | |
# arch: x86_64 | |
- api-level: 30 | |
os: ubuntu-latest | |
target: default | |
arch: x86_64 | |
- api-level: 34 | |
os: ubuntu-latest | |
target: aosp_atd | |
arch: x86_64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
submodules: 'recursive' | |
- name: enable KVM for linux runners | |
if: runner.os == 'Linux' | |
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 | |
- uses: gradle/actions/wrapper-validation@v3 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Gradle cache | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-home-cache-cleanup: true | |
cache-overwrite-existing: true | |
cache-read-only: false | |
add-job-summary: 'on-failure' | |
- name: Prepare for building | |
id: prepare | |
run: | | |
chmod +x gradlew | |
base64 --decode <<< "${{ secrets.RELEASE_KEY }}" > "${{ env.ANDROID_KEYSTORE_FILE }}" | |
grep -q '[^[:space:]]' "${{ env.ANDROID_KEYSTORE_FILE }}" && echo release_key_exists=true >> $GITHUB_ENV || echo release_key_exists=false >> $GITHUB_ENV | |
sed -i '/\/\/ CI TEST/{n;s/release/debug/g;}' app/build.gradle.kts | |
- name: Cache dict.txt | |
uses: actions/cache@v4 | |
with: | |
path: | | |
app/dict.txt | |
key: ${{ runner.os }}-dict.txt | |
- name: AVD cache | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ matrix.api-level }}-${{ matrix.os }}-${{ matrix.target }} | |
- name: create AVD && Generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/[email protected] | |
with: | |
avd-name: test-${{ matrix.api-level }}-${{ matrix.target }}-${{ matrix.arch }} | |
api-level: ${{ matrix.api-level }} | |
force-avd-creation: false | |
disable-animations: true | |
disable-spellchecker: true | |
ram-size: 4096M | |
target: ${{ matrix.target }} | |
arch: ${{ matrix.arch }} | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
channel: stable | |
script: echo "Generated AVD snapshot for caching." | |
- name: run tests | |
uses: reactivecircus/[email protected] | |
env: | |
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} | |
RELEASE_KEY_STORE_PASSWORD: ${{ secrets.RELEASE_KEY_STORE_PASSWORD }} | |
RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} | |
with: | |
avd-name: test-${{ matrix.api-level }}-${{ matrix.target }}-${{ matrix.arch }} | |
api-level: ${{ matrix.api-level }} | |
force-avd-creation: false | |
disable-animations: true | |
disable-spellchecker: true | |
ram-size: 4096M | |
target: ${{ matrix.target }} | |
arch: ${{ matrix.arch }} | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
channel: stable | |
script: ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.notPackage=com.kevalpatel2106.benchmark.macro | |
- name: Upload test results Artifact | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: android-test-report-avd-${{ matrix.api-level }}-${{ matrix.target }}-${{ matrix.arch }} | |
path: | | |
build/screenshots/**/* | |
build/androidTest-results/* | |
**/build/reports/androidTest/**/* | |
build/reports/* | |
if-no-files-found: warn |