forked from github/wulkanowy-mirror
7fe638130e
* Create test.yml * Change list of emulator api levels * Downgrade emulator with api 30 to 29 * Exclude jdk.internal in jacoco config * Use jdk 15 * Downgrade jdk to 11 due to jacoco incompatibility gradle/gradle#15038 * Fix tests on jdk11 * Add codecov * Add missing jacoco report generaction command * Add flags to codecov uploads * Add deploy config * Replace travis badge with gh actions badge * Add info about coroutines to readme, replace dagger with hilt * Decrease instrumentation tests to 15 minutes * Skip duplicate actions * Remove comment * Change os of instrumentation tests * Downgrade android emulator runner to v2.13.0 * Add pre-build job * Pass prebuild files between jobs * Fix gh actions yaml config * Tar build cache * Fix upload-artifact filename * Fix prebuild cache name * Add more to cache, change cache key
142 lines
4.6 KiB
YAML
142 lines
4.6 KiB
YAML
name: Test and deploy
|
|
|
|
on:
|
|
push:
|
|
branches: [ develop ]
|
|
tags: [ '*' ]
|
|
pull_request:
|
|
branches: [ develop ]
|
|
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
name: Pre-build
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: fkirc/skip-duplicate-actions@master
|
|
- uses: actions/checkout@v2
|
|
- uses: gradle/wrapper-validation-action@v1
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
|
|
- name: Build
|
|
run: ./gradlew compileFdroidDebugUnitTestKotlin packageFdroidDebug preFdroidDebugAndroidTestBuild
|
|
- name: Prepare build cache
|
|
run: tar -cvf prebuild.tar .gradle app/build
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: prebuild.tar
|
|
path: prebuild.tar
|
|
|
|
unit-tests:
|
|
name: Unit tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
needs: [ build ]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: prebuild.tar
|
|
- name: Extract build cache
|
|
run: tar -xvf prebuild.tar app/build
|
|
- name: Unit tests
|
|
run: |
|
|
./gradlew -Pcoverage testFdroidDebugUnitTest --stacktrace
|
|
./gradlew -Pcoverage jacocoTestReport --stacktrace
|
|
- uses: codecov/codecov-action@v1
|
|
with:
|
|
flags: unit
|
|
|
|
instrumentation-tests:
|
|
name: Instrumentation tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [ build ]
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
api-level: [21, 29]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: prebuild.tar
|
|
- name: Extract build cache
|
|
run: tar -xvf prebuild.tar app/build
|
|
- name: Instrumentation tests
|
|
uses: reactivecircus/android-emulator-runner@v2.13.0
|
|
with:
|
|
api-level: ${{ matrix.api-level }}
|
|
arch: x86
|
|
script: |
|
|
./gradlew -Pcoverage connectedFdroidDebugAndroidTest --stacktrace
|
|
./gradlew -Pcoverage jacocoTestReport --stacktrace
|
|
- uses: codecov/codecov-action@v1
|
|
with:
|
|
flags: instrumented,api-${{ matrix.api-level }}
|
|
|
|
deploy-google-play:
|
|
name: Deploy to google play
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
environment: google-play
|
|
needs: [ build, unit-tests, instrumentation-tests ]
|
|
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: prebuild.tar
|
|
- name: Extract build cache
|
|
run: tar -xvf prebuild.tar app/build
|
|
- name: Decrypt keys
|
|
env:
|
|
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
|
|
SERVICES_ENCRYPT_KEY: ${{ secrets.SERVICES_ENCRYPT_KEY }}
|
|
run: |
|
|
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg
|
|
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/key.p12.gpg
|
|
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg
|
|
- name: Upload apk to google play
|
|
env:
|
|
PLAY_KEY_PASSWORD: ${{ secrets.PLAY_KEY_PASSWORD }}
|
|
PLAY_SERVICE_ACCOUNT_EMAIL: ${{ secrets.PLAY_SERVICE_ACCOUNT_EMAIL }}
|
|
PLAY_STORE_PASSWORD: ${{ secrets.PLAY_STORE_PASSWORD }}
|
|
run: ./gradlew publishPlayRelease -PenableFirebase --stacktrace;
|