From 74abb4a1c504637b53be51c11108702f0a46a418 Mon Sep 17 00:00:00 2001 From: gongyun Date: Thu, 21 May 2026 22:32:49 +0800 Subject: [PATCH] android-app-v1.3.1 build & tag --- .gitea/workflows/android-release.yml | 52 +++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/android-release.yml b/.gitea/workflows/android-release.yml index 5816d8e..1bd4ade 100644 --- a/.gitea/workflows/android-release.yml +++ b/.gitea/workflows/android-release.yml @@ -5,13 +5,11 @@ on: branches: - main - master - tags: - - "android-app-v*" workflow_dispatch: permissions: actions: read - contents: read + contents: write releases: write jobs: @@ -180,6 +178,51 @@ jobs: cp "$apk" gongyun-android-app-release.apk ls -alh gongyun-android-app-release.apk + - name: Resolve Android release tag + id: android_tag + shell: bash + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + run: | + set -euo pipefail + + if [ -z "${GITEA_TOKEN:-}" ]; then + echo "GITEA_TOKEN is required to create Android release tags." + exit 1 + fi + + if [[ "$GITHUB_REF" == refs/tags/android-app-v* ]]; then + tag_name="${GITHUB_REF#refs/tags/}" + else + app_version="$(awk -F '[:+]' '/^version:/ {gsub(/[[:space:]]/, "", $2); print $2; exit}' pubspec.yaml)" + if [ -z "$app_version" ]; then + echo "Unable to resolve app version from pubspec.yaml." + exit 1 + fi + tag_name="android-app-v${app_version}" + fi + + echo "tag_name=$tag_name" >> "$GITHUB_OUTPUT" + echo "Android release tag: $tag_name" + + current_commit="$(git rev-parse HEAD)" + if git ls-remote --exit-code --tags origin "refs/tags/$tag_name" >/dev/null 2>&1; then + git fetch --force --depth=1 origin "refs/tags/$tag_name:refs/tags/$tag_name" + existing_tag_commit="$(git rev-list -n 1 "$tag_name")" + if [ "$existing_tag_commit" != "$current_commit" ]; then + echo "Tag $tag_name already exists at $existing_tag_commit, but this build is $current_commit." + echo "Bump pubspec.yaml version before creating a new Android release." + exit 1 + fi + echo "Tag $tag_name already exists for this commit." + exit 0 + fi + + git config user.name "gitea-actions" + git config user.email "gitea-actions@git.saont.net" + git tag "$tag_name" "$current_commit" + git push origin "refs/tags/$tag_name" + - name: Upload Android APK artifact uses: actions/upload-artifact@v3 with: @@ -187,14 +230,13 @@ jobs: path: gongyun-android-app-release.apk - name: Publish Gitea release - if: startsWith(github.ref, 'refs/tags/android-app-v') shell: bash env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_API_URL: https://git.saont.net/api/v1 GITEA_OWNER: gongyun GITEA_REPO: app - TAG_NAME: ${{ github.ref_name }} + TAG_NAME: ${{ steps.android_tag.outputs.tag_name }} TARGET_COMMITISH: ${{ github.sha }} ANDROID_APK_FILE: gongyun-android-app-release.apk run: |