Skip to content

Update crate-ci/typos action to v1.16.12 #2820

Update crate-ci/typos action to v1.16.12

Update crate-ci/typos action to v1.16.12 #2820

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
code-quality:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Install asdf
uses: asdf-vm/actions/[email protected]
- name: Install local CLI tooling
shell: bash
run: ./scripts/setup-asdf.sh
- name: Check Kotlin sources
run: ./scripts/code-style-kotlin.sh all
- name: Check Bash sources
run: ./scripts/code-style-bash.sh
- name: Check typos on code
uses: crate-ci/[email protected]
unit-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
needs: [code-quality]
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Setup Android Build
uses: ./.github/actions/setup-android-build
- name: Run unit tests
uses: nick-fields/[email protected]
with:
command: ./gradlew clean test --no-daemon
timeout_minutes: 8
max_attempts: 5
- name: Collect all test results from all modules
if: always()
run: ./scripts/aggregate-test-reports.sh build/test-reports
- name: Archive test results
if: always()
uses: actions/[email protected]
with:
name: unit-tests-reports
path: build/test-reports
assemble-apk:
runs-on: ubuntu-22.04
timeout-minutes: 25
needs: [code-quality]
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Setup Android Build
uses: ./.github/actions/setup-android-build
- name: Assemble APKs
run: ./gradlew app:assembleRelease -PtestMode=true --no-daemon
- name: Archive Release APK
if: success()
uses: actions/[email protected]
with:
name: release-apk
path: app/build/outputs/apk/release
- name: Archive R8 mappings
if: success()
uses: actions/[email protected]
with:
name: release-mappings
path: app/build/outputs/mapping/release
functional-tests:
runs-on: ubuntu-22.04
timeout-minutes: 25
needs: [assemble-apk]
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Install asdf
uses: asdf-vm/actions/[email protected]
- name: Install local CLI tooling
shell: bash
run: ./scripts/setup-asdf.sh
- name: Fetch Instrumentation artefacts
uses: actions/[email protected]
- name: Run E2E tests on mobile.dev clould
run: ./scripts/maestro.sh release-apk/app-release.apk
env:
MOBILE_DEV_CLOUD_TOKEN: ${{ secrets.MOBILE_DEV_CLOUD_TOKEN }}
instrumentation-tests:
runs-on: ubuntu-22.04
needs: [code-quality]
timeout-minutes: 20
strategy:
matrix:
feature: [ 'facts', 'search' ]
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Fetch Instrumentation artefacts
uses: actions/[email protected]
- name: Install asdf
uses: asdf-vm/actions/[email protected]
- name: Install local CLI tooling
run: ./scripts/setup-asdf.sh
- name: Setup Android Build
uses: ./.github/actions/setup-android-build
- name: Run instrumentation tests
run: ./gradlew features:${{ matrix.feature }}:testDebugWithEmulatorWtf
env:
EW_API_TOKEN: ${{ secrets.EMULATOR_WTF_TOKEN }}
- name: Archive test results
if: always()
uses: actions/[email protected]
with:
name: ${{ matrix.feature }}-instrumentation-tests-reports
path: features/${{ matrix.feature }}/build/test-results
security-analysis:
runs-on: ubuntu-22.04
timeout-minutes: 25
needs: assemble-apk
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
with:
fetch-depth: 0
- name: Check leaking secrets on source files
uses: trufflesecurity/[email protected]
with:
path: ./
base: ${{ github.event.repository.default_branch }}
head: HEAD
extra_args: --debug --only-verified
- name: Validate Gradle Wrapper
uses: gradle/[email protected]
- name: Fetch APK from previous build
uses: actions/[email protected]
- name: Analyse APK with AppSweep
uses: guardsquare/appsweep-action@main
env:
APPSWEEP_API_KEY: ${{ secrets.APP_SWEEP_TOKEN }}
COMMIT_HASH: ${{ steps.vars.outputs.sha_short }}
INPUT_FILE: release-apk/app-release.apk
MAPPING_FILE: release-mappings/mapping.txt
app-size-analysis:
runs-on: ubuntu-22.04
timeout-minutes: 10
if: github.ref == 'refs/heads/master'
needs: assemble-apk
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Fetch Instrumentation artefacts
uses: actions/[email protected]
- name: Upload to EmergeTools
uses: EmergeTools/[email protected]
with:
artifact_path: release-apk/app-release.apk
emerge_api_key: ${{ secrets.EMERGETOOLS_API_KEY }}
build_type: release
test-results-analysis:
runs-on: ubuntu-22.04
timeout-minutes: 25
needs: [unit-tests, instrumentation-tests, functional-tests]
steps:
- name: Project Checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Fetch all artefacts
uses: actions/[email protected]
- name: Copy all test results
run: mkdir all-reports && mv *-tests-reports/ all-reports
- name: Report test results
uses: dorny/[email protected]
with:
name: 'Test Reports'
reporter: java-junit
path: all-reports/**/*.xml