Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .github/workflows/android-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Android Release APK

'on':
push:
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- main
workflow_dispatch:
inputs:
release_tag:
description: Optional tag to publish (example v1.0.0). Leave empty for build only.
required: false

permissions:
contents: write

jobs:
build_apk:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build release APK
working-directory: android
run: ./gradlew --no-daemon assembleRelease

- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: app-release-apk
path: android/app/build/outputs/apk/release/app-release.apk

publish_release:
needs: build_apk
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag != '')
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Resolve release tag
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "RELEASE_TAG=${{ github.event.inputs.release_tag }}" >> "$GITHUB_ENV"
else
echo "RELEASE_TAG=${GITHUB_REF_NAME}" >> "$GITHUB_ENV"
fi

- name: Ensure tag exists for manual run
if: github.event_name == 'workflow_dispatch'
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag "$RELEASE_TAG" "${{ github.sha }}" || true
git push origin "$RELEASE_TAG"

- name: Download APK artifact
uses: actions/download-artifact@v4
with:
name: app-release-apk
path: dist

- name: Attach APK to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
generate_release_notes: true
files: dist/app-release.apk