name: Test on: push: branches: - "main" - "rc" - "hotfix-rc" pull_request: types: [opened, synchronize] merge_group: types: [checks_requested] workflow_dispatch: env: _JAVA_VERSION: 17 _GITHUB_ACTION_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }} jobs: test: name: Test runs-on: ubuntu-24.04 permissions: packages: read pull-requests: write steps: - name: Check out repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Cache Gradle files uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-v2-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/libs.versions.toml') }} restore-keys: | ${{ runner.os }}-gradle-v2- - name: Cache build output uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ${{ github.workspace }}/build-cache key: ${{ runner.os }}-build-cache-${{ github.sha }} restore-keys: | ${{ runner.os }}-build- - name: Configure Ruby uses: ruby/setup-ruby@ca041f971d66735f3e5ff1e21cc13e2d51e7e535 # v1.233.0 with: bundler-cache: true - name: Configure JDK uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 with: distribution: "temurin" java-version: ${{ env._JAVA_VERSION }} - name: Install Fastlane run: | gem install bundler:2.2.27 bundle config path vendor/bundle bundle install --jobs 4 --retry 3 - name: Build and test env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Used in settings.gradle.kts to download the SDK from GitHub Maven Packages run: | bundle exec fastlane check - name: Upload test reports uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: name: test-reports path: | build/reports/kover/reportMergedCoverage.xml app/build/reports/tests/ authenticator/build/reports/tests/ authenticatorbridge/build/reports/tests/ core/build/reports/tests/ data/build/reports/tests/ network/build/reports/tests/ ui/build/reports/tests/ - name: Upload to codecov.io id: upload-to-codecov uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2 if: github.event_name == 'push' || github.event_name == 'pull_request' continue-on-error: true with: os: linux files: build/reports/kover/reportMergedCoverage.xml fail_ci_if_error: true disable_search: true - name: Comment PR if tests failed if: steps.upload-to-codecov.outcome == 'failure' && (github.event_name == 'push' || github.event_name == 'pull_request') env: PR_NUMBER: ${{ github.event.number }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} RUN_ACTOR: ${{ github.triggering_actor }} run: | echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> Uploading code coverage report failed. Please check the \"Upload to codecov.io\" step of \"Process Test Reports\" job for more details." >> $GITHUB_STEP_SUMMARY if [ -n "$PR_NUMBER" ]; then message=$'> [!WARNING]\n> @'$RUN_ACTOR' Uploading code coverage report failed. Please check the "Upload to codecov.io" step of [Process Test Reports job]('$_GITHUB_ACTION_RUN_URL') for more details.' gh pr comment --repo $GITHUB_REPOSITORY $PR_NUMBER --body "$message" fi