Skip to content

Repetitive tasks and other enhancements (#129) #36

Repetitive tasks and other enhancements (#129)

Repetitive tasks and other enhancements (#129) #36

Workflow file for this run

name: Release
on:
push:
tags:
- '*'
jobs:
detekt:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Gradle cache
uses: gradle/gradle-build-action@v2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Detekt ♻️
run: ./gradlew detekt
unit_tests:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Gradle cache
uses: gradle/gradle-build-action@v2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Decode google-services.json
env:
FIREBASE_CONFIG: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $FIREBASE_CONFIG > app/google-services.json
- name: Unit tests
run: ./gradlew test -x :screenshot_testing:test
ui_tests:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Decode google-services.json
env:
FIREBASE_CONFIG: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $FIREBASE_CONFIG > app/google-services.json
- name: Gradle cache
uses: gradle/gradle-build-action@v2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: AVD cache
uses: actions/cache@v3
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-29
- name: create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
target: default
api-level: 29
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
sdcard-path-or-size: 100M
force-avd-creation: false
script: echo "Generated AVD snapshot for caching."
- name: 🤖 UI tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./gradlew app:connectedAndroidTest
screenshot_tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Decode google-services.json
env:
FIREBASE_CONFIG: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $FIREBASE_CONFIG > app/google-services.json
- name: 📸 Snapshot tests
run: ./gradlew verifyPaparazziDebug
build:
needs: [ unit_tests, ui_tests, screenshot_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Gradle cache
uses: gradle/gradle-build-action@v2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Decode google-services.json
env:
FIREBASE_CONFIG: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $FIREBASE_CONFIG > app/google-services.json
- name: Decode keystore
run: |
echo "${{ secrets.SIGNING_KEY_BASE_64 }}" > release.keystore.asc
gpg -d --passphrase "${{ secrets.KEY_STORE_PASSWORD }}" --batch release.keystore.asc > release.keystore
- name: Generate Release Bundle
run: ./gradlew bundleProductionRelease
env:
SIGNING_KEY_ALIAS: ${{ secrets.ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
- name: Upload artifact
uses: actions/upload-artifact@master
with:
name: bundle
path: app/build/outputs/bundle/productionRelease/app-production-release.aab
- name: Upload mapping.txt
uses: actions/upload-artifact@master
with:
name: mapping.txt
path: app/build/outputs/mapping/productionRelease/mapping.txt
deploy-play-store:
needs: [ build ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Gradle cache
uses: gradle/gradle-build-action@v2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Decode google-services.json
env:
FIREBASE_CONFIG: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $FIREBASE_CONFIG > app/google-services.json
- name: Download artifact
uses: actions/download-artifact@master
with:
name: bundle
- name: Download mapping.txt
uses: actions/download-artifact@master
with:
name: mapping.txt
- name: Publish to Play Store
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: com.costular.atomtasks
releaseFiles: app-production-release.aab
track: production
mappingFile: mapping.txt
whatsNewDirectory: whatsNew
status: inProgress
userFraction: 0.33