From 3b26e0c0140e972232d8330c9149dcc3e45b5af4 Mon Sep 17 00:00:00 2001 From: cc <98377878+hicccc77@users.noreply.github.com> Date: Mon, 6 Apr 2026 12:15:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-daily-fixed.yml | 31 +++++++++++++++++++-- .github/workflows/preview-nightly-main.yml | 32 ++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dev-daily-fixed.yml b/.github/workflows/dev-daily-fixed.yml index 03bdc42..35e2950 100644 --- a/.github/workflows/dev-daily-fixed.yml +++ b/.github/workflows/dev-daily-fixed.yml @@ -6,6 +6,10 @@ on: - cron: "0 16 * * *" workflow_dispatch: +concurrency: + group: dev-daily-fixed-release + cancel-in-progress: false + permissions: contents: write @@ -278,7 +282,16 @@ jobs: exit 0 fi - ASSETS_JSON="$(gh release view "$TAG" --repo "$REPO" --json assets)" + RELEASE_JSON="$(gh release view "$TAG" --repo "$REPO" --json id,tagName,isDraft,isPrerelease,url,assets)" + RELEASE_ID="$(echo "$RELEASE_JSON" | jq -r '.id')" + RELEASE_TAG="$(echo "$RELEASE_JSON" | jq -r '.tagName')" + RELEASE_DRAFT="$(echo "$RELEASE_JSON" | jq -r '.isDraft')" + RELEASE_PRERELEASE="$(echo "$RELEASE_JSON" | jq -r '.isPrerelease')" + RELEASE_URL="$(echo "$RELEASE_JSON" | jq -r '.url')" + ASSETS_JSON="$(echo "$RELEASE_JSON" | jq -c '{assets: .assets}')" + + echo "Resolved release id=$RELEASE_ID tag=$RELEASE_TAG draft=$RELEASE_DRAFT prerelease=$RELEASE_PRERELEASE" + echo "Resolved release url=$RELEASE_URL" pick_asset() { local pattern="$1" @@ -327,4 +340,18 @@ jobs: - 如某个平台资源暂未生成,请进入[发布页]($RELEASE_PAGE)查看最新状态 EOF - gh release edit "$TAG" --repo "$REPO" --title "Daily Dev Build" --notes-file dev_release_notes.md + # Use release id to avoid tag resolution ambiguity, and force status to prerelease (not draft). + jq -n \ + --arg name "Daily Dev Build" \ + --arg body "$(cat dev_release_notes.md)" \ + '{name: $name, body: $body, draft: false, prerelease: true, make_latest: "false"}' \ + > release_patch_payload.json + + gh api \ + --method PATCH \ + -H "Accept: application/vnd.github+json" \ + "repos/$REPO/releases/$RELEASE_ID" \ + --input release_patch_payload.json >/dev/null + + FINAL_STATUS="$(gh release view "$TAG" --repo "$REPO" --json isDraft,isPrerelease,url)" + echo "Final release status: $(echo "$FINAL_STATUS" | jq -c '.')" diff --git a/.github/workflows/preview-nightly-main.yml b/.github/workflows/preview-nightly-main.yml index 186c7c0..1081ea8 100644 --- a/.github/workflows/preview-nightly-main.yml +++ b/.github/workflows/preview-nightly-main.yml @@ -6,6 +6,10 @@ on: - cron: "0 16 * * *" workflow_dispatch: +concurrency: + group: preview-nightly-fixed-release + cancel-in-progress: false + permissions: contents: write @@ -305,6 +309,7 @@ jobs: - name: Update preview release notes env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FIXED_PREVIEW_TAG: ${{ env.FIXED_PREVIEW_TAG }} shell: bash run: | set -euo pipefail @@ -319,7 +324,16 @@ jobs: exit 0 fi - ASSETS_JSON="$(gh release view "$TAG" --repo "$REPO" --json assets)" + RELEASE_JSON="$(gh release view "$TAG" --repo "$REPO" --json id,tagName,isDraft,isPrerelease,url,assets)" + RELEASE_ID="$(echo "$RELEASE_JSON" | jq -r '.id')" + RELEASE_TAG="$(echo "$RELEASE_JSON" | jq -r '.tagName')" + RELEASE_DRAFT="$(echo "$RELEASE_JSON" | jq -r '.isDraft')" + RELEASE_PRERELEASE="$(echo "$RELEASE_JSON" | jq -r '.isPrerelease')" + RELEASE_URL="$(echo "$RELEASE_JSON" | jq -r '.url')" + ASSETS_JSON="$(echo "$RELEASE_JSON" | jq -c '{assets: .assets}')" + + echo "Resolved release id=$RELEASE_ID tag=$RELEASE_TAG draft=$RELEASE_DRAFT prerelease=$RELEASE_PRERELEASE" + echo "Resolved release url=$RELEASE_URL" pick_asset() { local pattern="$1" @@ -369,4 +383,18 @@ jobs: > 如某个平台链接暂未生成,请前往[发布页]($RELEASE_PAGE)查看最新资源 EOF - gh release edit "$TAG" --repo "$REPO" --notes-file preview_release_notes.md + # Use release id to avoid tag resolution ambiguity, and force status to prerelease (not draft). + jq -n \ + --arg name "Preview Nightly Build" \ + --arg body "$(cat preview_release_notes.md)" \ + '{name: $name, body: $body, draft: false, prerelease: true, make_latest: "false"}' \ + > release_patch_payload.json + + gh api \ + --method PATCH \ + -H "Accept: application/vnd.github+json" \ + "repos/$REPO/releases/$RELEASE_ID" \ + --input release_patch_payload.json >/dev/null + + FINAL_STATUS="$(gh release view "$TAG" --repo "$REPO" --json isDraft,isPrerelease,url)" + echo "Final release status: $(echo "$FINAL_STATUS" | jq -c '.')"