From 31c33928ecb19950165f67ce4a30ad0ad3e91d1c Mon Sep 17 00:00:00 2001 From: Gaubee Date: Wed, 28 Jan 2026 00:03:59 +0800 Subject: [PATCH] fix(ci): skip existing release assets --- .github/workflows/cd.yml | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 3d34894f5..7ba9f3f2d 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -422,14 +422,21 @@ jobs: fi if gh release view "$TAG_NAME" >/dev/null 2>&1; then release_json=$(gh api "repos/${{ github.repository }}/releases/tags/$TAG_NAME") + upload_files=() for file in "${release_files[@]}"; do name=$(basename "$file") asset_id=$(echo "$release_json" | jq -r --arg name "$name" '.assets[] | select(.name==$name) | .id') if [ -n "$asset_id" ] && [ "$asset_id" != "null" ]; then - gh api -X DELETE "repos/${{ github.repository }}/releases/assets/$asset_id" || true + echo "Release asset exists, skip upload: $name" + continue fi + upload_files+=("$file") done - gh release upload "$TAG_NAME" "${release_files[@]}" + if [ "${#upload_files[@]}" -eq 0 ]; then + echo "All release assets already exist, skip upload" + else + gh release upload "$TAG_NAME" "${upload_files[@]}" + fi else gh release create "$TAG_NAME" \ --title "$RELEASE_TITLE" \ @@ -944,14 +951,21 @@ jobs: fi if gh release view "$TAG_NAME" >/dev/null 2>&1; then release_json=$(gh api "repos/${{ github.repository }}/releases/tags/$TAG_NAME") + upload_files=() for file in "${release_files[@]}"; do name=$(basename "$file") asset_id=$(echo "$release_json" | jq -r --arg name "$name" '.assets[] | select(.name==$name) | .id') if [ -n "$asset_id" ] && [ "$asset_id" != "null" ]; then - gh api -X DELETE "repos/${{ github.repository }}/releases/assets/$asset_id" || true + echo "Release asset exists, skip upload: $name" + continue fi + upload_files+=("$file") done - gh release upload "$TAG_NAME" "${release_files[@]}" + if [ "${#upload_files[@]}" -eq 0 ]; then + echo "All release assets already exist, skip upload" + else + gh release upload "$TAG_NAME" "${upload_files[@]}" + fi else gh release create "$TAG_NAME" \ --title "$RELEASE_TITLE" \