mirror of
https://github.com/moeru-ai/airi.git
synced 2026-05-17 21:32:43 +00:00
126 lines
4.3 KiB
YAML
126 lines
4.3 KiB
YAML
name: Release Pocket (Android)
|
|
|
|
permissions:
|
|
contents: write
|
|
actions: read
|
|
|
|
on:
|
|
release:
|
|
types:
|
|
- prereleased
|
|
workflow_dispatch:
|
|
inputs:
|
|
build_only:
|
|
description: Build only (no upload to release)
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
tag:
|
|
description: Specific tag for the release upload
|
|
required: false
|
|
type: string
|
|
schedule:
|
|
- cron: '0 1 * * *'
|
|
|
|
jobs:
|
|
build:
|
|
name: Build Android APK
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PRODUCT_NAME: 'AIRI'
|
|
# Every current trigger path produces an installable APK artifact, so ship the analytics-enabled build consistently.
|
|
VITE_ENABLE_POSTHOG: 'true'
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: '21'
|
|
|
|
- name: Setup Android SDK
|
|
uses: android-actions/setup-android@v3
|
|
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
run_install: false
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: lts/*
|
|
cache: pnpm
|
|
|
|
- name: Install Android build tools
|
|
run: |
|
|
sdkmanager "build-tools;36.1.0"
|
|
echo "${ANDROID_SDK_ROOT:-$ANDROID_HOME}/build-tools/36.1.0" >> "$GITHUB_PATH"
|
|
|
|
- run: pnpm install --frozen-lockfile
|
|
- run: pnpm run build:packages
|
|
|
|
- name: Validate workflow dispatch release tag
|
|
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && inputs.tag == '' }}
|
|
run: |
|
|
echo "workflow_dispatch release uploads require the tag input"
|
|
exit 1
|
|
|
|
- name: Build web assets
|
|
run: pnpm -F @proj-airi/stage-pocket run build
|
|
|
|
- name: Capacitor sync
|
|
run: pnpm -F @proj-airi/stage-pocket exec cap sync android
|
|
|
|
- name: Extract android keystore
|
|
run: echo "${{ secrets.CAPACITOR_ANDROID_KEYSTORE_BASE64 }}" | base64 -d > ${{ github.workspace }}/apps/stage-pocket/airi-pocket.jks
|
|
|
|
- name: Build APK
|
|
working-directory: apps/stage-pocket/android
|
|
run: pnpm -F @proj-airi/stage-pocket exec cap build android
|
|
env:
|
|
CAPACITOR_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/apps/stage-pocket/airi-pocket.jks
|
|
CAPACITOR_ANDROID_KEYSTORE_ALIAS: ${{ secrets.CAPACITOR_ANDROID_KEYSTORE_ALIAS }}
|
|
CAPACITOR_ANDROID_KEYSTORE_PASSWORD: ${{ secrets.CAPACITOR_ANDROID_KEYSTORE_PASSWORD }}
|
|
CAPACITOR_ANDROID_KEYSTORE_ALIAS_PASSWORD: ${{ secrets.CAPACITOR_ANDROID_KEYSTORE_ALIAS_PASSWORD }}
|
|
|
|
- name: Rename APK for distribution
|
|
env:
|
|
RELEASE_TAG_NAME: ${{ github.event.release.tag_name || inputs.tag }}
|
|
run: |
|
|
VERSION="${RELEASE_TAG_NAME#v}"
|
|
if [ -z "$VERSION" ]; then
|
|
VERSION="$(sed -n 's/^AIRI_VERSION_NAME=//p' apps/stage-pocket/android/app-version.properties)"
|
|
fi
|
|
|
|
APK_NAME="${PRODUCT_NAME}-${VERSION}-android.apk"
|
|
APK_SOURCE="apps/stage-pocket/android/app/build/outputs/apk/release/app-release-signed.apk"
|
|
APK_BUNDLE_DIR="apps/stage-pocket/android/bundle"
|
|
|
|
mkdir -p "$APK_BUNDLE_DIR"
|
|
mv "$APK_SOURCE" "$APK_BUNDLE_DIR/$APK_NAME"
|
|
|
|
echo "APK_NAME=$APK_NAME" >> "$GITHUB_ENV"
|
|
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
|
|
|
|
- name: Upload APK artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ env.APK_NAME }}
|
|
path: apps/stage-pocket/android/bundle/${{ env.APK_NAME }}
|
|
if-no-files-found: error
|
|
|
|
- name: Upload to GitHub Releases
|
|
if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && !inputs.build_only) }}
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: apps/stage-pocket/android/bundle/${{ env.APK_NAME }}
|
|
append_body: true
|
|
tag_name: ${{ github.event.release.tag_name || inputs.tag }}
|
|
|
|
- name: Setup butler
|
|
uses: remarkablegames/setup-butler@v2
|
|
|
|
# https://itch.io/docs/butler/pushing.html
|
|
- name: Upload Android to itch.io
|
|
if: ${{ github.event_name == 'release' }}
|
|
run: butler push apps/stage-pocket/android/bundle/${{ env.APK_NAME }} nekomeowww/airi:android --userversion ${{ env.VERSION }}
|
|
env:
|
|
BUTLER_API_KEY: ${{ secrets.GAME_PUBLISHING_ITCHIO }}
|