From 112694f8605da25e90626be5ed6579a3504ae050 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 26 May 2026 11:18:08 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=A2=84=E5=8F=91=E5=B8=83=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=B8=85=E7=90=86=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cleanup-prerelease-tags.yml | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cleanup-prerelease-tags.yml b/.github/workflows/cleanup-prerelease-tags.yml index 522f04cf..1608f236 100644 --- a/.github/workflows/cleanup-prerelease-tags.yml +++ b/.github/workflows/cleanup-prerelease-tags.yml @@ -1,10 +1,15 @@ -name: Preview prerelease tag cleanup +name: Cleanup prerelease tags on: workflow_dispatch: + inputs: + confirm: + description: "Type cleanup-prerelease-tags to delete all prerelease releases and tags" + required: true + type: string permissions: - contents: read + contents: write jobs: cleanup: @@ -29,13 +34,19 @@ jobs: echo "is_prerelease=true" >> "$GITHUB_OUTPUT" fi - - name: Preview prerelease releases and tags + - name: Delete prerelease releases and tags if: steps.version.outputs.should_run == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CONFIRM: ${{ github.event.inputs.confirm }} run: | + if [[ "$CONFIRM" != "cleanup-prerelease-tags" ]]; then + echo "confirm input must be exactly cleanup-prerelease-tags" >&2 + exit 1 + fi + mapfile -t TAGS < <(git tag --list 'v*' | sort -V) - MATCHED=0 + DELETED=0 for TAG in "${TAGS[@]}"; do if [[ "$TAG" =~ ^v[0-9]+(\.[0-9]+)*$ ]]; then @@ -44,12 +55,15 @@ jobs: fi if gh release view "$TAG" >/dev/null 2>&1; then - echo "Would delete prerelease tag and release: $TAG" + echo "Delete prerelease release: $TAG" + gh release delete "$TAG" --yes else - echo "Would delete prerelease tag only: $TAG (no GitHub Release found)" + echo "No GitHub Release found for $TAG" fi - MATCHED=$((MATCHED + 1)) + echo "Delete prerelease tag: $TAG" + git push origin --delete "refs/tags/$TAG" + DELETED=$((DELETED + 1)) done - echo "Found $MATCHED prerelease tag(s) that would be deleted." + echo "Deleted $DELETED prerelease tag(s)."