Skip to content

feature : GH-64 Update dependencies, migrate auth module to use compo… #311

feature : GH-64 Update dependencies, migrate auth module to use compo…

feature : GH-64 Update dependencies, migrate auth module to use compo… #311

Workflow file for this run

name: Build, Test & Check
on:
push:
branches:
- main
paths-ignore:
- "docs/**"
- "doc/**"
pull_request:
paths-ignore:
- "docs/**"
- "doc/**"
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
jobs:
verify_code_quality:
name: Verify Code Quality
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Decrypt large secret
shell: bash
run: |
./scripts/decrypt_secret.sh
env:
LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp ci-cd/ci-gradle.properties ~/.gradle/gradle.properties
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Verify Code Quality
run: ./gradlew detekt ktlintCheck
build_test_check:
name: Build,Test & Check
needs: verify_code_quality
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Decrypt large secret
shell: bash
run: |
./scripts/decrypt_secret.sh
env:
LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp ci-cd/ci-gradle.properties ~/.gradle/gradle.properties
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
# Replace task exclusions with `-Pandroidx.baselineprofile.skipgeneration` when
# https://android-review.googlesource.com/c/platform/frameworks/support/+/2602790 landed in a
# release build
- name: Build all build type and flavor permutations
run: |
./gradlew :app:assemble :benchmark:assemble \
-x pixel6Api33NonMinifiedReleaseAndroidTest \
-x pixel6Api33NonMinifiedBenchmarkAndroidTest \
-x collectNonMinifiedReleaseBaselineProfile \
-x collectNonMinifiedBenchmarkBaselineProfile
- name: Run all local screenshot tests (Roborazzi)
id: verifyScreenshot
continue-on-error: true
run: ./gradlew verifyRoborazziDebug
- name: Prevent pushing new screenshots if this is a fork
id: checkIsFork
continue-on-error: false
if: steps.verifyScreenshot.outcome == 'failure' && github.event.pull_request.head.repo.full_name != github.repository
run: |
echo "::error::Screenshot tests failed, please create a PR in your fork first." && exit 1
# Runs if previous job failed
- name: Generate new screenshots if verification failed and it's a PR
id: recordScreenshot
if: steps.verifyScreenshot.outcome == 'failure' && github.event_name == 'pull_request'
run: |
./gradlew recordRoborazziDebug
- name: Push new screenshots if available
uses: stefanzweifel/git-auto-commit-action@v5
if: steps.recordScreenshot.outcome == 'success'
with:
file_pattern: '*/*.png'
disable_globbing: true
commit_message: "🤖 Updates screenshots"
- name: Run local tests with coverage
if: always()
run: ./gradlew testDebugUnitTest
- name: Check lint
run: ./gradlew :app:lintRelease
- name: Generate androidTest Coverage Report
run: ./gradlew jacocoTestCoverageReport
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
files: "**/build/reports/jacoco/test*UnitTestCoverage/**.xml"
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# - name: Upload build outputs (APKs)
# uses: actions/upload-artifact@v3
# with:
# name: APKs
# path: '**/build/outputs/apk/**/*.apk'
#
# - name: Upload lint reports (HTML)
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: lint-reports
# path: '**/build/reports/lint-results-*.html'
#
# - name: Upload test results (XML)
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: test-results
# path: '**/build/test-results/test*UnitTest/**.xml'
# android_test:
# name: Android Tests
# needs: [ verify_code_quality,build_test_check ]
# runs-on: ubuntu-latest # enables hardware acceleration in the virtual machine
# timeout-minutes: 55
# strategy:
# matrix:
# api-level: [ 26, 30 ]
#
# steps:
# - name: Checkout
# uses: actions/checkout@v4
#
# - name: Copy CI gradle.properties
# run: mkdir -p ~/.gradle ; cp ci-cd/ci-gradle.properties ~/.gradle/gradle.properties
#
# - name: Set up JDK 17
# uses: actions/setup-java@v4
# with:
# distribution: 'zulu'
# java-version: 17
#
# - name: Setup Gradle
# uses: gradle/actions/setup-gradle@v3
#
# - name: Build AndroidTest apps
# run: ./gradlew -Pcoverage assembleDebug assembleDebugAndroidTest --daemon
#
# - name: Run instrumentation tests
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: ${{ matrix.api-level }}
# arch: x86_64
# disable-animations: true
# disk-size: 6000M
# heap-size: 600M
# script: ./gradlew :androidTest:connectedDebugAndroidTest --daemon
#
# - name: Run all local screenshot tests (Roborazzi)
# id: verify-screen-shorts
# continue-on-error: true
# run: ./gradlew verifyRoborazziDebug
#
# - name: Generate androidTest Coverage Report
# run: ./gradlew jacocoTestCoverageReport
#
# # - name: Verify androidTest Coverage report # This will fail if the coverage it not up to the set threshold
# # run: ./gradlew jacocoTestCoverageVerification
#
# # - name: Upload test reports
# # if: always()
# # uses: actions/upload-artifact@v3
# # with:
# # name: test-reports-${{ matrix.api-level }}
# # path: '**/build/reports/androidTests'
#
#
# - name: Upload coverage reports to Codecov
# uses: codecov/codecov-action@v4
# with:
# files: "**/build/reports/jacoco/test*UnitTestCoverage/**.xml"
# env:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}