--------- Co-authored-by: intelligence <intelligence@debian.local> Reviewed-on: #1
70 lines
2.6 KiB
YAML
70 lines
2.6 KiB
YAML
name: Android
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-android:
|
|
runs-on: debian-latest
|
|
permissions:
|
|
contents: read
|
|
releases: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
- uses: android-actions/setup-android@v3
|
|
# Gitea's act resolver cannot peel the annotated v4 tag alias.
|
|
- uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3
|
|
- name: Install Android SDK packages
|
|
run: sdkmanager "platforms;android-35" "build-tools;35.0.0"
|
|
- name: Lint and test
|
|
working-directory: android
|
|
run: ./gradlew --no-daemon lintDebug testDebugUnitTest
|
|
- name: Build signed release APK
|
|
working-directory: android
|
|
env:
|
|
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
|
|
ORG_GRADLE_PROJECT_transuiStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
|
ORG_GRADLE_PROJECT_transuiKeyAlias: ${{ secrets.ANDROID_KEY_ALIAS }}
|
|
ORG_GRADLE_PROJECT_transuiKeyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
|
|
run: |
|
|
if [ -z "$ANDROID_KEYSTORE_BASE64" ]; then
|
|
echo "Release signing secrets are not configured; skipping release APK"
|
|
exit 0
|
|
fi
|
|
keystore="$RUNNER_TEMP/transui-release.jks"
|
|
printf '%s' "$ANDROID_KEYSTORE_BASE64" | base64 --decode > "$keystore"
|
|
export ORG_GRADLE_PROJECT_transuiKeystore="$keystore"
|
|
./gradlew --no-daemon assembleRelease
|
|
- name: Prepare APK artifacts
|
|
working-directory: android
|
|
run: |
|
|
mkdir -p ../artifacts
|
|
if [ -f app/build/outputs/apk/release/app-release.apk ]; then
|
|
cp app/build/outputs/apk/release/app-release.apk ../artifacts/transui-android-release.apk
|
|
cd ../artifacts
|
|
sha256sum ./*.apk > SHA256SUMS-android
|
|
else
|
|
echo "No release APK to publish"
|
|
fi
|
|
- name: Attach APKs to the Gitea release
|
|
if: gitea.event_name == 'release'
|
|
env:
|
|
GITEA_SERVER_URL: ${{ gitea.server_url }}
|
|
GITEA_REPOSITORY: ${{ gitea.repository }}
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
GITEA_RELEASE_TAG: ${{ gitea.event.release.tag_name }}
|
|
run: scripts/publish-release-assets.sh
|
|
- name: Upload APKs
|
|
if: always()
|
|
uses: christopherhx/gitea-upload-artifact@v4
|
|
with:
|
|
name: transui-android
|
|
path: artifacts/
|
|
if-no-files-found: warn
|