diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3b4319ded..1a0ebbfa1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,16 +9,28 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v3 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '17' + + - name: Cache Gradle dependencies + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Build project run: ./gradlew sdk:build -x test unit-test: - name: Unit test + name: Unit tests with coverage report runs-on: ubuntu-latest needs: build steps: @@ -33,75 +45,17 @@ jobs: distribution: 'zulu' java-version: '17' - - name: Run unit tests - run: | - ./gradlew sdk:testProductionDebugUnitTest - - - name: Upload test report - if: always() - uses: actions/upload-artifact@v2 - with: - name: test-report - path: sdk/build/reports - - instrumentation-test: - name: Instrumentation test - # Due to Android emulator issue on Ubuntu, we use macOS instead. - runs-on: macos-latest - needs: build - strategy: - matrix: - api-level: [ 29 ] - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - fetch-depth: 0 # required for SonarCloud - - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '17' - - - name: Gradle cache - uses: gradle/gradle-build-action@v2 - - - name: AVD cache + - name: Cache Gradle dependencies uses: actions/cache@v3 - 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 - profile: Nexus 6 - script: echo "Generated AVD snapshot for caching." + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- - - name: Run instrumentation tests - uses: reactivecircus/android-emulator-runner@v2 + - name: Run unit tests env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - api-level: ${{ matrix.api-level }} - disable-animations: true - force-avd-creation: false - profile: Nexus 6 - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - script: ./gradlew sdk:connectedProductionDebugAndroidTest sdk:jacocoTestReport sdk:sonar - - - name: Upload test report - if: always() - uses: actions/upload-artifact@v2 - with: - name: test-report - path: sdk/build/reports + run: ./gradlew sdk:jacocoUnitTestReport sdk:sonar