# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions name: Build on: push: branches: - master pull_request: env: TRAVIS: true jobs: ANDROID_BASE_CHECKS: name: Base Checks runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: 1.8 - name: Perform base checks run: ./gradlew demo:assembleDebug cameraview:javadoc ANDROID_UNIT_TESTS: name: Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: 1.8 - name: Execute unit tests run: ./gradlew cameraview:testDebugUnitTest - name: Upload unit tests artifact uses: actions/upload-artifact@v1 with: name: unit_tests path: ./cameraview/build/jacoco/ ANDROID_EMULATOR_TESTS: name: Emulator Tests runs-on: macOS-latest strategy: matrix: # TODO 29 fails due to Mockito issues, probably reproducible locally. # 22, 23, 24, 25, 26, 27, 28 work - some of them, with SdkExclude restrictions. EMULATOR_API: [22, 23, 24, 25, 26, 27, 28] EMULATOR_ARCH: [x86_64] steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: 1.8 - name: Execute emulator tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.EMULATOR_API }} arch: ${{ matrix.EMULATOR_ARCH }} disable-animations: true emulator-options: -no-snapshot -no-window -no-boot-anim -camera-back emulated -camera-front emulated -memory 2048 script: ./gradlew cameraview:connectedCheck - name: Upload emulator tests artifact uses: actions/upload-artifact@v1 with: name: emulator_tests path: ./cameraview/build/outputs/code_coverage/debugAndroidTest/connected CODE_COVERAGE: name: Code Coverage Report runs-on: ubuntu-latest needs: [ANDROID_UNIT_TESTS, ANDROID_EMULATOR_TESTS] steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: 1.8 - name: Download unit tests artifact uses: actions/download-artifact@v1 with: name: unit_tests path: ./cameraview/build/jacoco/ - name: Download emulator tests artifact uses: actions/download-artifact@v1 with: name: emulator_tests path: ./cameraview/build/outputs/code_coverage/debugAndroidTest/connected - name: Create merged coverage report run: ./gradlew cameraview:mergeCoverageReports - name: Upload merged coverage report (GitHub) uses: actions/upload-artifact@v1 with: name: report path: ./cameraview/build/reports/mergedCoverageReport - name: Upload merged coverage report (Codecov) uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_KEY }} file: ./cameraview/build/reports/mergedCoverageReport/* fail_ci_if_error: true