The gradlew stub and missing gradle-wrapper.jar caused CI build to fail. Now uses gradle/actions/setup-gradle@v4 to install Gradle, then generates wrapper before building. Also renames signed APK and uploads both signed and unsigned to GitHub Releases.
91 lines
2.9 KiB
YAML
91 lines
2.9 KiB
YAML
name: Build TWA APK
|
|
|
|
on:
|
|
push:
|
|
tags: ['v*']
|
|
workflow_dispatch:
|
|
inputs:
|
|
app_url:
|
|
description: 'App URL override (default: https://peds.danvics.com)'
|
|
required: false
|
|
|
|
env:
|
|
APP_URL: ${{ github.event.inputs.app_url || secrets.APP_URL || 'https://peds.danvics.com' }}
|
|
|
|
jobs:
|
|
build-apk:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '17'
|
|
|
|
- name: Setup Android SDK
|
|
uses: android-actions/setup-android@v3
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Generate Gradle wrapper
|
|
working-directory: android
|
|
run: |
|
|
gradle wrapper --gradle-version=8.5
|
|
|
|
- name: Build APK
|
|
working-directory: android
|
|
run: |
|
|
TWA_HOST=$(echo "${{ env.APP_URL }}" | sed 's|https://||;s|http://||;s|/.*||')
|
|
./gradlew assembleRelease -PTWA_HOST="${TWA_HOST}"
|
|
|
|
- name: Sign APK
|
|
if: success()
|
|
uses: r0adkll/sign-android-release@v1
|
|
id: sign
|
|
with:
|
|
releaseDirectory: android/app/build/outputs/apk/release
|
|
signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
|
|
alias: ${{ secrets.ANDROID_KEY_ALIAS }}
|
|
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
|
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
|
|
|
|
- name: Rename signed APK
|
|
if: steps.sign.outcome == 'success'
|
|
run: |
|
|
SIGNED=$(find android/app/build/outputs/apk/release -name "*-signed.apk" | head -1)
|
|
if [ -n "$SIGNED" ]; then
|
|
cp "$SIGNED" android/app/build/outputs/apk/release/PedScribe-v${{ github.ref_name }}-signed.apk
|
|
fi
|
|
|
|
- name: Upload APK to Release
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: |
|
|
android/app/build/outputs/apk/release/*-signed.apk
|
|
android/app/build/outputs/apk/release/app-release-unsigned.apk
|
|
generate_release_notes: true
|
|
|
|
- name: Upload artifact
|
|
if: success()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: pediatric-scribe-apk
|
|
path: android/app/build/outputs/apk/release/*.apk
|
|
retention-days: 30
|
|
|
|
- name: Summary
|
|
run: |
|
|
echo "### TWA APK Build" >> $GITHUB_STEP_SUMMARY
|
|
echo "Built for: ${{ env.APP_URL }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Install options:**" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Download from GitHub Releases" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Obtainium: add repo \`https://github.com/ifedan-ed/pediatric-ai-scribe-v3\`" >> $GITHUB_STEP_SUMMARY
|