From e228454f10d3bbcea5e98f9265223f82c5518edc Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:28:02 +0300 Subject: [PATCH 01/10] feat: more targets --- .github/workflows/matrix_run_android.yml | 67 ++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/matrix_run_android.yml diff --git a/.github/workflows/matrix_run_android.yml b/.github/workflows/matrix_run_android.yml new file mode 100644 index 000000000..f90877c8e --- /dev/null +++ b/.github/workflows/matrix_run_android.yml @@ -0,0 +1,67 @@ +name: The Countly Android SDK Unit Test Whole API Levels + +env: + JAVA_V: 11 + JAVA_DIST: corretto + +permissions: + checks: write + pull-requests: write + +on: + push: + branches: + - master + - staging + pull_request: + branches: + - master + - staging + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + api-level: [24,25,26,27,28,29,30,31,32,33,34,35] + target: [google_apis] + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: Enable KVM + 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: Gradle cache + uses: gradle/actions/setup-gradle@v3 + + - name: AVD cache + uses: actions/cache@v4 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.api-level }} + + - 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: ${{ matrix.api-level }} + 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: run tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.api-level }} + 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 \ No newline at end of file From 3aeb7ec2a7894be609ed58e877b77b1033e7372c Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:34:47 +0300 Subject: [PATCH 02/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 40 +++++--------- .github/workflows/matrix_run_android.yml | 67 ------------------------ 2 files changed, 14 insertions(+), 93 deletions(-) delete mode 100644 .github/workflows/matrix_run_android.yml diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 45499d360..02205b7d7 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -25,12 +25,6 @@ jobs: name: Build and Test the SDK steps: - - name: Install Docker to the Runner - run: sudo apt-get install docker - - - name: Pull Emulator from the Repo - run: docker pull ${{ env.EMULATOR_REPO }} - - name: Checkout SDK code uses: actions/checkout@v4 @@ -46,25 +40,19 @@ jobs: - name: Start ADB Server run: adb start-server - - name: Run Android Emulator Container - run: docker run -d -e "ADBKEY=$(cat ~/.android/adbkey)" --device /dev/kvm --publish 5555:5555/tcp ${{ env.EMULATOR_REPO }} - - - name: Connect to the Emulator - run: adb connect localhost:5555 - - - name: Build the SDK - if: always() - run: ./gradlew sdk:build + - name: Set up AVD (Android Virtual Device) + run: | + sdkmanager --install "system-images;android-30;default;x86_64" + echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;x86_64" --force + emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & - - name: Run the Android Unit Tests - if: always() - run: ./gradlew sdk:connectedAndroidTest + - name: Wait for Emulator to start + run: | + adb wait-for-device + adb shell input keyevent 82 - - name: Publish Test Results to PR - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() - with: - check_name: "Unit Test Results :rocket:" - comment_title: "Unit Test Results :rocket:" - files: | - sdk/build/outputs/androidTest-results/**/*.xml + - name: Run tests + run: ./gradlew connectedCheck + + - name: Stop Emulator + run: adb emu kill \ No newline at end of file diff --git a/.github/workflows/matrix_run_android.yml b/.github/workflows/matrix_run_android.yml deleted file mode 100644 index f90877c8e..000000000 --- a/.github/workflows/matrix_run_android.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: The Countly Android SDK Unit Test Whole API Levels - -env: - JAVA_V: 11 - JAVA_DIST: corretto - -permissions: - checks: write - pull-requests: write - -on: - push: - branches: - - master - - staging - pull_request: - branches: - - master - - staging - -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - api-level: [24,25,26,27,28,29,30,31,32,33,34,35] - target: [google_apis] - steps: - - name: checkout - uses: actions/checkout@v4 - - - name: Enable KVM - 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: Gradle cache - uses: gradle/actions/setup-gradle@v3 - - - name: AVD cache - uses: actions/cache@v4 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.api-level }} - - - 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: ${{ matrix.api-level }} - 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: run tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - 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 \ No newline at end of file From 371f81ed57bc01049e9a0c4ff73a4e26587748f3 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:37:31 +0300 Subject: [PATCH 03/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 02205b7d7..530ec32e7 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -42,9 +42,12 @@ jobs: - name: Set up AVD (Android Virtual Device) run: | - sdkmanager --install "system-images;android-30;default;x86_64" + sudo apt-get update + sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils + sdkmanager --install "system-images;android-30;default;x86_64" "platform-tools" "emulator" echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;x86_64" --force - emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & + echo "Emulator path is: $ANDROID_HOME/emulator" + $ANDROID_HOME/emulator/emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & - name: Wait for Emulator to start run: | From 7c915f64841925f8527c5fe04c81fc257717c292 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:38:43 +0300 Subject: [PATCH 04/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 530ec32e7..ad0b37b31 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -36,6 +36,11 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v2.0.10 + with: + api-level: 30 + target: 'default' + arch: 'x86_64' + channel: 'stable' - name: Start ADB Server run: adb start-server From b00526bf481a1965cb44857683c6b2b556cc1b8b Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:41:58 +0300 Subject: [PATCH 05/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index ad0b37b31..f68fd2486 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -38,20 +38,17 @@ jobs: uses: android-actions/setup-android@v2.0.10 with: api-level: 30 - target: 'default' - arch: 'x86_64' + target: 'google-apis' + arch: 'arm64-v8a' channel: 'stable' - name: Start ADB Server run: adb start-server - - name: Set up AVD (Android Virtual Device) + - name: Install and configure ARM emulator run: | - sudo apt-get update - sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils - sdkmanager --install "system-images;android-30;default;x86_64" "platform-tools" "emulator" - echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;x86_64" --force - echo "Emulator path is: $ANDROID_HOME/emulator" + sdkmanager --install "system-images;android-30;default;arm64-v8a" + echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;arm64-v8a" --force $ANDROID_HOME/emulator/emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & - name: Wait for Emulator to start From 3ca22048c6a29a7dc96084817ef1c25e440550c5 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:45:27 +0300 Subject: [PATCH 06/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index f68fd2486..5d0563913 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -34,21 +34,30 @@ jobs: java-version: ${{ env.JAVA_V }} distribution: ${{ env.JAVA_DIST }} + - name: Enable KVM + 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 Android SDK uses: android-actions/setup-android@v2.0.10 with: api-level: 30 target: 'google-apis' - arch: 'arm64-v8a' + arch: 'x86_64' channel: 'stable' - name: Start ADB Server run: adb start-server - - name: Install and configure ARM emulator + - name: Set up AVD (Android Virtual Device) run: | - sdkmanager --install "system-images;android-30;default;arm64-v8a" - echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;arm64-v8a" --force + sudo apt-get update + sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils + sdkmanager --install "system-images;android-30;default;x86_64" "platform-tools" "emulator" + echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;x86_64" --force + echo "Emulator path is: $ANDROID_HOME/emulator" $ANDROID_HOME/emulator/emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & - name: Wait for Emulator to start From a8ae88ea6a95731fca1194666ee93a7c0bce10e2 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:48:41 +0300 Subject: [PATCH 07/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 5d0563913..14ce204a5 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -63,7 +63,6 @@ jobs: - name: Wait for Emulator to start run: | adb wait-for-device - adb shell input keyevent 82 - name: Run tests run: ./gradlew connectedCheck From 3e7a680d8bcab03e629ba463c1c5348ec57081bc Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 09:54:13 +0300 Subject: [PATCH 08/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 14ce204a5..871cbd39d 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -64,8 +64,13 @@ jobs: run: | adb wait-for-device - - name: Run tests - run: ./gradlew connectedCheck + - name: Build the SDK + if: always() + run: ./gradlew sdk:build + + - name: Run the Android Unit Tests + if: always() + run: ./gradlew sdk:connectedAndroidTest - name: Stop Emulator run: adb emu kill \ No newline at end of file From 6acb77d5b18ee8d6fc0451cbba80d02f09fca99b Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Thu, 29 Aug 2024 10:09:33 +0300 Subject: [PATCH 09/10] feat: test another thingy --- .github/workflows/build_and_test_sdk.yml | 25 ++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index 871cbd39d..f2e41815f 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -20,9 +20,12 @@ on: - staging jobs: - setup: + test: runs-on: ubuntu-latest name: Build and Test the SDK + strategy: + matrix: + api-level: [21,22,23,24,25,26,27,28,29,30,31,32,33,34,35] steps: - name: Checkout SDK code @@ -43,7 +46,7 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v2.0.10 with: - api-level: 30 + api-level: ${{ matrix.api-level }} target: 'google-apis' arch: 'x86_64' channel: 'stable' @@ -55,8 +58,8 @@ jobs: run: | sudo apt-get update sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils - sdkmanager --install "system-images;android-30;default;x86_64" "platform-tools" "emulator" - echo "no" | avdmanager create avd -n test -k "system-images;android-30;default;x86_64" --force + sdkmanager --install "system-images;android-${{ matrix.api-level }};default;x86_64" "platform-tools" "emulator" + echo "no" | avdmanager create avd -n test -k "system-images;android-${{ matrix.api-level }};default;x86_64" --force echo "Emulator path is: $ANDROID_HOME/emulator" $ANDROID_HOME/emulator/emulator -avd test -no-window -no-audio -no-boot-anim -no-snapshot-load & @@ -67,10 +70,20 @@ jobs: - name: Build the SDK if: always() run: ./gradlew sdk:build - + - name: Run the Android Unit Tests if: always() run: ./gradlew sdk:connectedAndroidTest - name: Stop Emulator - run: adb emu kill \ No newline at end of file + if: always() + run: adb emu kill + + - name: Publish Test Results to PR + uses: EnricoMi/publish-unit-test-result-action@v2 + if: always() + with: + check_name: "Unit Test Results ${{ matrix.api-level }} :rocket:" + comment_title: "Unit Test Results ${{ matrix.api-level }} :rocket:" + files: | + sdk/build/outputs/androidTest-results/**/*.xml \ No newline at end of file From 07c8b7fc3188416b0eeb10aab680db1fb77c212c Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Tue, 24 Sep 2024 17:09:08 +0300 Subject: [PATCH 10/10] fix: disable fail fast --- .github/workflows/build_and_test_sdk.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index f2e41815f..cc35f23e4 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -24,6 +24,7 @@ jobs: runs-on: ubuntu-latest name: Build and Test the SDK strategy: + fail-fast: false matrix: api-level: [21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]