79 lines
2.2 KiB
YAML
79 lines
2.2 KiB
YAML
name: Build APK
|
|
|
|
on:
|
|
push:
|
|
branches: [ '**' ]
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
JAVA_VERSION: 17
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
cache: gradle
|
|
|
|
- name: Setup Android SDK
|
|
uses: android-actions/setup-android@v2
|
|
|
|
- name: Make Gradle executable
|
|
run: chmod +x ./gradlew
|
|
|
|
- name: Optional Keystore (if provided)
|
|
env:
|
|
KEYSTORE: ${{ secrets.KEYSTORE }}
|
|
run: |
|
|
if [ -n "$KEYSTORE" ]; then
|
|
echo "$KEYSTORE" | base64 -d > signing-key.jks
|
|
ls -l signing-key.jks
|
|
else
|
|
echo "No keystore provided, skipping..."
|
|
fi
|
|
|
|
- name: Assemble Debug and Release
|
|
env:
|
|
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
|
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
|
GRADLE_OPTS: -Dorg.gradle.daemon=false
|
|
run: |
|
|
if [ -f signing-key.jks ]; then
|
|
./gradlew assembleDebug assembleRelease \
|
|
-Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/signing-key.jks \
|
|
-Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \
|
|
-Pandroid.injected.signing.key.alias="$KEY_ALIAS" \
|
|
-Pandroid.injected.signing.key.password="$KEY_PASSWORD"
|
|
else
|
|
./gradlew assembleDebug assembleRelease
|
|
fi
|
|
|
|
- name: Collect APKs
|
|
run: |
|
|
mkdir -p dist
|
|
cp app/build/outputs/apk/debug/*.apk dist/ || true
|
|
# Prefer signed release if produced
|
|
if ls app/build/outputs/apk/release/*-signed.apk >/dev/null 2>&1; then
|
|
cp app/build/outputs/apk/release/*-signed.apk dist/
|
|
else
|
|
cp app/build/outputs/apk/release/*.apk dist/
|
|
fi
|
|
ls -1 dist
|
|
|
|
- name: Upload All APKs
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: apks
|
|
path: dist/*.apk
|
|
if-no-files-found: error
|