# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions # Renaming ? Change the README badge. name: Build on: push: branches: - main pull_request: jobs: ANDROID_BASE_CHECKS: name: Base Checks runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: 11 distribution: temurin cache: gradle - name: Perform base checks run: ./gradlew demo:assembleDebug cameraview:publishToDirectory --stacktrace ANDROID_UNIT_TESTS: name: Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: 11 distribution: temurin cache: gradle - name: Execute unit tests run: ./gradlew cameraview:runUnitTests --stacktrace - name: Upload unit tests artifact uses: actions/upload-artifact@v1 with: name: unit_tests path: ./cameraview/build/coverage_input/unit_tests ANDROID_EMULATOR_TESTS: name: Emulator Tests runs-on: macos-latest strategy: fail-fast: false matrix: # TODO 29 fails due to Mockito issues, probably reproducible locally # 22-28 work (some of them, with SdkExclude restrictions) EMULATOR_API: [22, 23, 24, 25, 26, 27, 28] include: - EMULATOR_API: 28 EMULATOR_ARCH: x86_64 - EMULATOR_API: 27 EMULATOR_ARCH: x86_64 - EMULATOR_API: 26 EMULATOR_ARCH: x86_64 - EMULATOR_API: 25 EMULATOR_ARCH: x86 - EMULATOR_API: 24 EMULATOR_ARCH: x86 - EMULATOR_API: 23 EMULATOR_ARCH: x86 - EMULATOR_API: 22 EMULATOR_ARCH: x86 steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: 11 distribution: temurin cache: gradle - name: Execute emulator tests timeout-minutes: 30 uses: reactivecircus/android-emulator-runner@v2.21.0 with: api-level: ${{ matrix.EMULATOR_API }} arch: ${{ matrix.EMULATOR_ARCH }} disable-animations: true profile: Nexus 5X emulator-options: -no-snapshot -no-window -no-boot-anim -camera-back emulated -camera-front emulated -gpu swiftshader_indirect script: ./.github/workflows/emulator_script.sh - name: Upload emulator tests artifact uses: actions/upload-artifact@v1 with: name: emulator_tests_${{ matrix.EMULATOR_API }} path: ./cameraview/build/coverage_input/android_tests CODE_COVERAGE: name: Code Coverage Report runs-on: ubuntu-latest needs: [ANDROID_UNIT_TESTS, ANDROID_EMULATOR_TESTS] steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: 11 distribution: temurin cache: gradle - name: Download unit tests artifact uses: actions/download-artifact@v1 with: name: unit_tests path: ./cameraview/build/coverage_input/unit_tests - name: Download emulator tests artifact uses: actions/download-artifact@v1 with: # 27 is the EMULATOR_API with less SdkExclude annotations, and should have # the best possible coverage. name: emulator_tests_27 path: ./cameraview/build/coverage_input/android_tests - name: Create merged coverage report run: ./gradlew cameraview:computeCoverage - name: Upload merged coverage report (GitHub) uses: actions/upload-artifact@v1 with: name: report path: ./cameraview/build/coverage_output/xml - name: Upload merged coverage report (Codecov) uses: codecov/codecov-action@v1 with: file: ./cameraview/build/coverage_output/xml/* fail_ci_if_error: true