Skip to content

ci: make PyPI workflow's release step idempotent#37

Merged
zywkloo merged 2 commits into
mainfrom
ci/idempotent-release
Jun 15, 2026
Merged

ci: make PyPI workflow's release step idempotent#37
zywkloo merged 2 commits into
mainfrom
ci/idempotent-release

Conversation

@zywkloo

@zywkloo zywkloo commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Problem

The "Publish to PyPI" workflow creates the GitHub Release as its last step. When the release was already created by hand before the tag was pushed (as happened for v0.4.2), that step fails with Release.tag_name already exists and the whole run goes red — even though the PyPI upload, an earlier step, had already succeeded.

For v0.4.2 the package did publish to PyPI, npm, and Homebrew successfully; only this redundant step turned the PyPI run red.

Fix

Skip release creation when the release already exists, so the run stays green whether or not the release was pre-created:

if gh release view "$TAG" >/dev/null 2>&1; then
  echo "Release already exists; skipping."
else
  gh release create "$TAG" --title "$TAG" --generate-notes
fi

The normal flow (push a tag, let the workflow create the release) is unchanged.

YAML validated locally.

🤖 Generated with Claude Code

zywkloo and others added 2 commits June 13, 2026 23:32
The Publish to PyPI workflow creates the GitHub Release as its last step. When
the release was already created by hand before pushing the tag, that step failed
with "Release.tag_name already exists" and the whole run went red even though
the PyPI upload (an earlier step) had succeeded.

Skip release creation when the release already exists, so the run stays green
regardless of whether the release was pre-created.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@zywkloo
zywkloo merged commit e6bba1d into main Jun 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant