From ede879c550029260ad6364c0b69399fa59853a0f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 16 Mar 2021 15:11:27 +0530 Subject: [PATCH] github: restructure CI test setup Signed-off-by: Harsh Shandilya --- .github/workflows/pull_request.yml | 48 ++++++++++++++++++++++++------ bors.toml | 3 +- scripts/boot_emulator.sh | 3 +- scripts/setup_environment.sh | 25 ++++++++++++++++ 4 files changed, 68 insertions(+), 11 deletions(-) create mode 100755 scripts/setup_environment.sh diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index bf70f94d..ab3174b7 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -7,7 +7,7 @@ on: - trying jobs: - test-pr: + run-screenshot-tests: runs-on: macOS-latest steps: @@ -21,14 +21,44 @@ jobs: - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - name: Run unit and instrumentation tests - uses: reactivecircus/android-emulator-runner@d2799957d660add41c61a5103e2fbb9e2889eb73 - with: - api-level: 30 - target: google_apis - profile: pixel_xl - script: | - ./gradlew test executeScreenshotTests --stacktrace + - name: Boot emulator manually + run: | + ./scripts/setup_environment.sh + ./scripts/boot_emulator.sh & + until [ "$(adb shell getprop sys.boot_completed)" == "1" ] + do sleep 5 + done + + - uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6 + name: Run screenshot tests + with: + arguments: executeScreenshotTests --stacktrace + + - name: (Fail-only) upload test report + if: failure() + uses: actions/upload-artifact@27bce4eee761b5bc643f46a8dfb41b430c8d05f6 + with: + name: Test report + path: app/build/reports + + run-unit-tests: + runs-on: ubuntu-latest + steps: + + - uses: actions/setup-java@d202f5dbf7256730fb690ec59f6381650114feb2 + with: + java-version: '11' + + - name: Checkout repository + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6 + name: Run unit tests + with: + arguments: test --stacktrace - name: (Fail-only) upload test report if: failure() diff --git a/bors.toml b/bors.toml index 0330ab92..1ff20ba6 100644 --- a/bors.toml +++ b/bors.toml @@ -1,3 +1,4 @@ status = [ - "test-pr" + "run-screenshot-tests", + "run-unit-tests" ] diff --git a/scripts/boot_emulator.sh b/scripts/boot_emulator.sh index 13c61185..5f7df108 100755 --- a/scripts/boot_emulator.sh +++ b/scripts/boot_emulator.sh @@ -7,12 +7,13 @@ set -euxo pipefail [ -n "${ANDROID_SDK_ROOT}" ] || { echo "ANDROID_SDK_ROOT must be set to use this script"; exit 1; } -"${ANDROID_SDK_ROOT}"/cmdline-tools/latest/bin/avdmanager create avd \ +echo no | "${ANDROID_SDK_ROOT}"/cmdline-tools/latest/bin/avdmanager create avd \ --force \ -n Pixel_XL_API_30 \ --abi 'google_apis/x86' \ --package 'system-images;android-30;google_apis;x86' \ --device 'pixel_xl' + "${ANDROID_SDK_ROOT}"/emulator/emulator \ -avd Pixel_XL_API_30 \ -no-window \ diff --git a/scripts/setup_environment.sh b/scripts/setup_environment.sh new file mode 100755 index 00000000..55595f74 --- /dev/null +++ b/scripts/setup_environment.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -euxo pipefail + +CMDLINE_TOOLS_URL_MAC="https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip" +CMDLINE_TOOLS_URL_LINUX="https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip" + +if [ "$(uname)" == "Linux" ]; then + wget "${CMDLINE_TOOLS_URL_LINUX}" -O /tmp/tools.zip -o /dev/null +elif [ "$(uname)" == "Darwin" ]; then + wget "${CMDLINE_TOOLS_URL_MAC}" -O /tmp/tools.zip -o /dev/null +else + echo "This script only works on Linux and Mac" + exit 1 +fi +unzip -qo /tmp/tools.zip -d "${ANDROID_SDK_ROOT}/latest" +mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" +mv -v "${ANDROID_SDK_ROOT}/latest/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" + +export PATH="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}" + +sdkmanager --install 'build-tools;30.0.3' platform-tools 'platforms;android-30' +sdkmanager --install emulator +sdkmanager --install 'system-images;android-30;google_apis;x86' +