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@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 - name: Cache Gradle files uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 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@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 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@829114fc20da43a41d27359103ec7a63020954d4 # v1.255.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@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 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