You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nowinandroid/.github/workflows/Build.yaml

128 lines
3.4 KiB

name: Build
on:
push:
branches:
- main
pull_request:
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Generate cache key
run: ./scripts/checksum.sh checksum.txt
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches/modules-*
~/.gradle/caches/jars-*
~/.gradle/caches/build-cache-*
key: gradle-${{ hashFiles('checksum.txt') }}
- name: Check spotless
run: ./gradlew spotlessCheck --stacktrace
- name: Check lint
run: ./gradlew lintDebug --stacktrace
- name: Build all build type and flavor permutations
run: ./gradlew assemble --stacktrace
- name: Run local tests
run: ./gradlew testDemoDebug testProdDebug --stacktrace
- name: Upload Demo build outputs (APKs)
uses: actions/upload-artifact@v3
with:
name: build-outputs-demo
path: app/demo/build/outputs
- name: Upload Prod build outputs (APKs)
uses: actions/upload-artifact@v3
with:
name: build-outputs-prod
path: app/prod/build/outputs
- name: Upload Demo build reports
if: always()
uses: actions/upload-artifact@v3
with:
name: build-reports-demo
path: app/demo/build/reports
- name: Upload Prod build reports
if: always()
uses: actions/upload-artifact@v3
with:
name: build-reports-prod
path: app/prod/build/reports
androidTest:
needs: build
runs-on: macOS-latest # enables hardware acceleration in the virtual machine
timeout-minutes: 45
strategy:
matrix:
api-level: [23, 26, 30]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Generate cache key
run: ./scripts/checksum.sh $SAMPLE_PATH checksum.txt
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches/modules-*
~/.gradle/caches/jars-*
~/.gradle/caches/build-cache-*
key: gradle-${{ hashFiles('checksum.txt') }}
- name: Run instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: true
disk-size: 1500M
heap-size: 512M
script: ./gradlew connectedProdDebugAndroidTest -x :benchmark:connectedProdBenchmarkAndroidTest --stacktrace
- name: Upload test reports
if: always()
uses: actions/upload-artifact@v3
with:
name: test-reports
path: '*/build/reports/androidTests'