From b4ef4642c45df2595577aed50d4ad450e3d95e44 Mon Sep 17 00:00:00 2001 From: dusy4 <56517228+dusy4@users.noreply.github.com> Date: Fri, 8 May 2026 22:06:57 +0200 Subject: [PATCH] ci(android): add complete CI + optional release publish flow --- .github/workflows/android-release.yml | 84 +++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/android-release.yml diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml new file mode 100644 index 0000000..56b7904 --- /dev/null +++ b/.github/workflows/android-release.yml @@ -0,0 +1,84 @@ +name: Android APK CI + Release + +on: + push: + branches: + - main + tags: + - 'v*' + pull_request: + branches: + - main + workflow_dispatch: + inputs: + release_tag: + description: "Optional: tag to publish release (example: v1.0.0). Leave empty for CI-only build." + 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 (workflow_dispatch) + 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