From c76ffb9997a298c43eef59242df55248d154465a Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Mon, 23 Mar 2026 02:24:50 +0300 Subject: [PATCH] fix: handle existing release in create-release job If the Gitea release already exists for a tag (e.g. from a retried workflow), fall back to fetching the existing release ID instead of failing with KeyError. --- .gitea/workflows/release.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 7e8f256..d61dbf4 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -51,7 +51,22 @@ jobs: \"prerelease\": $IS_PRE }") - RELEASE_ID=$(echo "$RELEASE" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") + # Extract release ID; if creation failed (already exists), fetch existing + RELEASE_ID=$(echo "$RELEASE" | python3 -c " + import sys, json + data = json.load(sys.stdin) + if 'id' in data: + print(data['id']) + else: + print('FAILED', file=sys.stderr) + print(json.dumps(data, indent=2), file=sys.stderr) + sys.exit(1) + " 2>&1) || { + echo "Create failed, fetching existing release for tag $TAG..." + RELEASE=$(curl -s "$BASE_URL/releases/tags/$TAG" \ + -H "Authorization: token $GITEA_TOKEN") + RELEASE_ID=$(echo "$RELEASE" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") + } echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" echo "version=$VERSION" >> "$GITHUB_OUTPUT"