Skip to content

Merge pull request #3792 from CruGlobal/trackToolPrimaryAndParallel #6565

Merge pull request #3792 from CruGlobal/trackToolPrimaryAndParallel

Merge pull request #3792 from CruGlobal/trackToolPrimaryAndParallel #6565

Workflow file for this run

name: Build App
on:
push:
branches: [develop, master, feature/*]
pull_request:
branches: [develop, master, feature/*]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build App
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Build App
run: ./gradlew bundle --scan
ktlint:
name: ktlint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run ktlint
run: ./gradlew :build-logic:ktlintCheck ktlintCheck --scan
- name: Archive ktlint results
if: always()
uses: actions/upload-artifact@v4
with:
name: ktlint-results
path: "**/build/reports/ktlint/"
lint:
name: Lint Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run Lint Checks
run: ./gradlew lint --scan
- name: Archive lint results
if: always()
uses: actions/upload-artifact@v4
with:
name: lint-results
path: "**/build/reports/lint-results*.*"
tests:
name: Unit Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
testShard: [1, 2, 3, 4]
env:
ORG_GRADLE_PROJECT_testShard: ${{ matrix.testShard }}
ORG_GRADLE_PROJECT_testTotalShards: 4
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: 'true'
submodules: 'true'
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.sha }}
restore-keys: |
${{ runner.os }}-maven-
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run Unit Tests
run: ./gradlew test verifyPaparazzi koverXmlReportDebug koverXmlReportProductionDebug --max-workers 1 --scan
- name: Codecov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: Archive Unit Test results
if: always()
uses: actions/upload-artifact@v4
with:
name: unit-test-results-${{ matrix.testShard }}
path: |
**/build/reports/tests/
**/build/paparazzi/failures/
qa_build:
name: Deploy QA Build
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
needs: [build, ktlint, lint, tests]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: 'true'
- name: Import Firebase API Key
env:
FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
run: echo $FIREBASE_API_KEY > firebase/firebase_api_key.json
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: true
- name: Build QA Universal APK
run: ./gradlew :app:packageProductionQaUniversalApk -PfirebaseAppDistributionBuild --scan
env:
ORG_GRADLE_PROJECT_firebaseAppDistributionKeystoreStorePassword: ${{ secrets.BETA_KEYSTORE_PASSWORD }}
ORG_GRADLE_PROJECT_firebaseAppDistributionKeystoreKeyPassword: ${{ secrets.BETA_KEYSTORE_PASSWORD }}
- name: Upload QA Build to Firebase
run: ./gradlew appDistributionUploadProductionQa -PfirebaseAppDistributionBuild --scan