[ANDR][Example] Add config settings page #284
Workflow file for this run
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 | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
# Cancel in-progress CI jobs when a new commit is pushed to a PR. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
pre_check: | |
name: pre_check | |
runs-on: ubuntu-latest | |
outputs: | |
should_run: ${{ steps.check_changes.outputs.run_tests }} | |
steps: | |
# Checkout repo to Github Actions runner | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# Check for Bazel build file changes | |
- name: Check for Bazel build file changes | |
id: bazel_check | |
run: ./ci/check_bazel.sh //examples/android:android_app | |
continue-on-error: true | |
- name: Check for workflow file changes | |
id: workflow_check | |
run: ./ci/files_changed.sh .github/workflows/android.yaml | |
continue-on-error: true | |
- name: Check for relevant Gradle changes | |
id: gradle_check | |
run: ./ci/files_changed.sh "^platform/jvm/gradle-test-app/.*\.(gradle|kts|kt|xml)$" | |
continue-on-error: true | |
- name: Determine if tests should run | |
id: check_changes_separate | |
run: | | |
bazel_status="${{ steps.bazel_check.outputs.check_result }}" | |
workflow_status="${{ steps.workflow_check.outputs.check_result }}" | |
gradle_status="${{ steps.gradle_check.outputs.check_result }}" | |
# Check if any status indicates a relevant change or error | |
if [[ "$bazel_status" == "1" || "$workflow_status" == "1" || "$gradle_status" == "1" ]]; then | |
echo "An unexpected issue occurred during checks." | |
exit 1 | |
elif [[ "$bazel_status" == "0" || "$workflow_status" == "0" || "$gradle_status" == "0" ]]; then | |
echo "Changes detected in one or more checks. Running tests." | |
echo "run_tests=true" >> $GITHUB_ENV | |
elif [[ "$bazel_status" == "2" && "$workflow_status" == "2" && "$gradle_status" == "2" ]]; then | |
echo "No relevant changes found." | |
echo "run_tests=false" >> $GITHUB_ENV | |
else | |
echo "Unknown issue." | |
exit 1 | |
fi | |
shell: bash | |
- name: Run downstream tests if changes are detected | |
id: check_changes | |
if: env.run_tests == 'true' | |
run: ./ci/run_tests.sh | |
build_apk: | |
runs-on: ubuntu-latest | |
if: needs.pre_check.outputs.should_run == 'true' | |
needs: pre_check | |
steps: | |
# Checkout repo to Github Actions runner | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: build apk | |
timeout-minutes: 30 | |
run: ./bazelw build --config ci --config release-android --fat_apk_cpu=x86_64 //examples/android:android_app | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: android_app.apk | |
path: ./bazel-bin/examples/android/android_app.apk | |
gradle_tests: | |
# Requires a "larger runner", for nested virtualization support | |
runs-on: ubuntu-latest-8-cores | |
env: | |
SKIP_PROTO_GEN: 1 | |
if: needs.pre_check.outputs.should_run == 'true' | |
needs: pre_check | |
steps: | |
- name: Checkout project sources | |
uses: actions/checkout@v4 | |
# See https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/ | |
- 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: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
cache: gradle | |
- name: Set up Rust ARM target | |
run: rustup update && rustup target add aarch64-linux-android && rustup target add x86_64-linux-android | |
- name: AVD cache | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: ${{ runner.os }}-avd-api-21-2 | |
- name: Create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
timeout-minutes: 30 | |
uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # [email protected] | |
with: | |
channel: stable | |
force-avd-creation: false | |
api-level: 21 | |
target: default | |
ram-size: 2048M | |
arch: x86_64 | |
disk-size: 6144M | |
profile: Nexus 6 | |
disable-animations: true | |
emulator-options: -no-window -accel on -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
script: echo "Generated AVD snapshot for caching." | |
- name: Gradle capture-timber unit tests | |
working-directory: ./platform/jvm | |
run: ./gradlew capture-timber:testReleaseUnitTest --info | |
- name: Check Licenses for modules | |
working-directory: ./platform/jvm | |
run: ./gradlew replay:checkLicense common:checkLicense # capture:checkLicense doesn't work at the moment | |
- name: Instrumentation Tests | |
uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # [email protected] | |
with: | |
channel: stable | |
force-avd-creation: false | |
api-level: 21 | |
target: default | |
ram-size: 2048M | |
arch: x86_64 | |
disk-size: 6144M | |
profile: Nexus 6 | |
disable-animations: true | |
emulator-options: -no-snapshot-save -no-window -accel on -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
script: cd platform/jvm && adb uninstall io.bitdrift.gradletestapp.test; adb uninstall io.bitdrift.gradletestapp; cd ../.. && ./tools/android_sdk_wrapper.sh platform/jvm/gradlew -p platform/jvm gradle-test-app:check gradle-test-app:connectedCheck --stacktrace | |
verify_android_hello_world_per_version: | |
needs: build_apk | |
runs-on: ubuntu-latest-8-cores | |
strategy: | |
matrix: | |
api-level: [21, 34] | |
steps: | |
# Checkout repo to Github Actions runner | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# See https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/ | |
- 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 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: android_app.apk | |
path: . | |
- name: AVD cache | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: ${{ runner.os }}-avd-api${{ matrix.api-level }}-1 | |
- name: Create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
timeout-minutes: 30 | |
uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b # pin@v2 | |
with: | |
channel: stable | |
api-level: ${{ matrix.api-level }} | |
target: google_apis | |
ram-size: 2048M | |
arch: x86_64 | |
disk-size: 6144M | |
profile: Nexus 6 | |
emulator-options: -no-window -accel on -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
script: echo "Generated AVD snapshot for caching." | |
- name: run tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
timeout-minutes: 15 | |
with: | |
force-avd-creation: false | |
channel: stable | |
api-level: ${{ matrix.api-level }} | |
target: google_apis | |
ram-size: 2048M | |
arch: x86_64 | |
disk-size: 6144M | |
profile: Nexus 6 | |
emulator-options: -no-snapshot-save -no-window -accel on -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
script: ./ci/verify_android.sh | |
# This is a noop job that completes once all the jobs spawned by the previous step completes. By blocking PR merges on this | |
# job completing, we are able to gate it on all the previous jobs without explicitly enumerating them. | |
verify_android: | |
runs-on: ubuntu-latest | |
needs: ["pre_check", "build_apk", "verify_android_hello_world_per_version", "gradle_tests"] | |
if: always() | |
steps: | |
# Checkout repo to Github Actions runner | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: check result | |
run: ./ci/check_result.sh ${{ needs.pre_check.result }} && ./ci/check_result.sh ${{ needs.build_apk.result }} && ./ci/check_result.sh ${{ needs.verify_android_hello_world_per_version.result }} && ./ci/check_result.sh ${{ needs.gradle_tests.result }} |