name: Forgejo Android APK on: workflow_dispatch: push: tags: - 'v*' jobs: build: name: Build signed APK runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up JDK 17 uses: actions/setup-java@v4 with: distribution: temurin java-version: '17' - name: Set up Node 20 uses: actions/setup-node@v4 with: node-version: '20' cache: npm cache-dependency-path: mobile/package-lock.json - name: Set up Android SDK uses: android-actions/setup-android@v3 - name: Install Capacitor dependencies working-directory: mobile run: | npm install --no-audit --no-fund npx cap sync android - name: Restore signing keystore env: KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} run: | test -n "$KEYSTORE_B64" echo "$KEYSTORE_B64" | base64 -d > "$RUNNER_TEMP/pedscribe-release.jks" - name: Build signed release APK working-directory: mobile/android env: KS_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} KEY_PASS: ${{ secrets.ANDROID_KEY_PASSWORD }} run: | ./gradlew assembleRelease \ -Pandroid.injected.signing.store.file="$RUNNER_TEMP/pedscribe-release.jks" \ -Pandroid.injected.signing.store.password="$KS_PASS" \ -Pandroid.injected.signing.key.alias="$KEY_ALIAS" \ -Pandroid.injected.signing.key.password="$KEY_PASS" \ --no-daemon --stacktrace - name: Collect APK run: | mkdir -p artifacts APK=$(find mobile/android/app/build/outputs/apk/release -name '*.apk' | head -1) test -n "$APK" cp "$APK" "artifacts/pedscribe-${GITHUB_REF_NAME:-manual}.apk" - name: Upload APK artifact uses: actions/upload-artifact@v4 with: name: pedscribe-android-apk path: artifacts/*.apk retention-days: 30