name: Test on: pull_request: {} push: branches: [main, develop] # Enrich gradle.properties for CI/CD env: CI_GRADLE_ARG_PROPERTIES: > -Porg.gradle.jvmargs=-Xmx2g -Porg.gradle.parallel=false jobs: # Build Android Tests [Matrix SDK] build-android-test-matrix-sdk: name: Matrix SDK - Build Android Tests runs-on: ubuntu-latest # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v2 with: distribution: 'adopt' java-version: 11 - uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Build Android Tests for matrix-sdk-android run: ./gradlew clean matrix-sdk-android:assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace # Build Android Tests [Matrix APP] build-android-test-app: name: App - Build Android Tests runs-on: ubuntu-latest # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v2 with: distribution: 'adopt' java-version: 11 - uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Build Android Tests for vector run: ./gradlew clean vector:assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace unit-tests: name: Run Unit Tests runs-on: ubuntu-latest # Allow all jobs on main and develop. Just one per PR. concurrency: group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }} cancel-in-progress: true steps: - uses: actions/checkout@v3 - uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Run unit tests run: ./gradlew clean test $CI_GRADLE_ARG_PROPERTIES --stacktrace - name: Format unit test results if: always() run: python3 ./tools/ci/render_test_output.py unit ./**/build/test-results/**/*.xml - name: Publish Unit Test Results uses: EnricoMi/publish-unit-test-result-action@v1 if: always() && github.event.sender.login != 'dependabot[bot]' && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository ) with: files: ./**/build/test-results/**/*.xml