Run release tests before deploying

Try to catch proguard issues
update_actions
Alex Baker 3 months ago
parent 932b8b0540
commit 74c35094c4

@ -0,0 +1,38 @@
name: 'Setup Android Emulator'
inputs:
api-level:
description: 'API level for the emulator'
required: true
default: '29'
script:
description: 'Script to run in the emulator'
required: true
runs:
using: "composite"
steps:
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Enable KVM
shell: bash
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run tests on emulator
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ inputs.api-level }}
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ${{ inputs.script }}

@ -25,7 +25,7 @@ jobs:
with:
bundler-cache: true
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
@ -43,6 +43,26 @@ jobs:
MAPBOX_KEY: ${{ secrets.MAPBOX_KEY }}
GOOGLE_KEY: ${{ secrets.GOOGLE_KEY }}
run: bundle exec fastlane bundle
- name: Install bundletool
run: |
wget -q https://github.com/google/bundletool/releases/download/1.17.2/bundletool-all-1.17.2.jar
sudo mv bundletool-all-1.17.2.jar /usr/local/bin/bundletool.jar
echo '#!/bin/bash' | sudo tee /usr/local/bin/bundletool
echo 'java -jar /usr/local/bin/bundletool.jar "$@"' | sudo tee -a /usr/local/bin/bundletool
sudo chmod +x /usr/local/bin/bundletool
- name: Extract APKs from bundles
env:
KEY_PATH: ${{ runner.temp }}/keystore.jks
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
run: bundle exec fastlane apkFromBundle
- name: Build test APK
run: ./gradlew app:assembleGoogleplayReleaseAndroidTest
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:

@ -45,47 +45,10 @@ jobs:
- name: checkout
uses: actions/checkout@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
# - name: AVD cache
# uses: actions/cache@v4
# id: avd-cache
# with:
# path: |
# ~/.android/avd/*
# ~/.android/adb*
# key: avd-${{ matrix.api-level }}
#
# - name: create AVD and generate snapshot for caching
# if: steps.avd-cache.outputs.cache-hit != 'true'
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: ${{ matrix.api-level }}
# force-avd-creation: false
# emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
# disable-animations: false
# script: echo "Generated AVD snapshot for caching."
- name: run tests
uses: reactivecircus/android-emulator-runner@v2
- name: Run tests
uses: ./.github/actions/setup-emulator
with:
api-level: ${{ matrix.api-level }}
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./gradlew -Pcoverage app:test${{ matrix.flavor }}DebugUnitTest app:connected${{ matrix.flavor }}DebugAndroidTest
- name: Upload test reports

@ -13,9 +13,45 @@ jobs:
bundle:
uses: ./.github/workflows/bundle.yml
secrets: inherit
release-test:
runs-on: ubuntu-latest
needs: [bundle]
steps:
- name: checkout
uses: actions/checkout@v5
- name: Download release artifacts
uses: actions/download-artifact@v5
with:
name: release
path: build-outputs
- name: Run release Android tests
uses: ./.github/actions/setup-emulator
with:
api-level: 29
script: |
# Install the pre-built APKs
adb install build-outputs/app/build/outputs/apk/googleplayRelease/universal.apk
adb install build-outputs/app/build/outputs/apk/androidTest/googleplayRelease/app-googleplay-release-androidTest.apk
# Run tests without rebuilding
./gradlew app:connectedGoogleplayReleaseAndroidTest \
-x :app:packageGoogleplayRelease \
-x :app:assembleGoogleplayRelease \
-x :app:assembleGoogleplayReleaseAndroidTest
- name: Upload release test reports
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: release-test-reports-googleplay
path: app/build/reports/**
deploy:
runs-on: ubuntu-latest
needs: [ bundle ]
needs: [ bundle, release-test ]
steps:
- uses: actions/checkout@v5
- name: Fastlane key

@ -69,4 +69,37 @@ platform :android do
}
)
end
desc "Generate APKs from bundles"
lane :apkFromBundle do
app_bundle = "app/build/outputs/bundle/googleplayRelease/app-googleplay-release.aab"
wear_bundle = "wear/build/outputs/bundle/release/wear-release.aab"
app_bundle_dir = "app/build/outputs/apk/googleplayRelease"
wear_bundle_dir = "wear/build/outputs/apk/release"
sh(
"bundletool",
"build-apks",
"--output-format", "DIRECTORY",
"--bundle", app_bundle,
"--output", app_bundle_dir,
"--mode", "universal",
"--ks", ENV["KEY_PATH"],
"--ks-pass", "pass:#{ENV["KEY_STORE_PASSWORD"]}",
"--ks-key-alias", ENV["KEY_ALIAS"],
"--key-pass", "pass:#{ENV["KEY_PASSWORD"]}",
)
sh(
"bundletool",
"build-apks",
"--output-format", "DIRECTORY",
"--bundle", wear_bundle,
"--output", wear_bundle_dir,
"--mode", "universal",
"--ks", ENV["KEY_PATH"],
"--ks-pass", "pass:#{ENV["KEY_STORE_PASSWORD"]}",
"--ks-key-alias", ENV["KEY_ALIAS"],
"--key-pass", "pass:#{ENV["KEY_PASSWORD"]}",
)
end
end

Loading…
Cancel
Save