mirror of
https://github.com/wulkanowy/wulkanowy.git
synced 2024-09-20 03:29:08 -05:00
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;
|