Skip to content

ci(release): make the release workflow retry-safe#24

Merged
CameronBrooks11 merged 1 commit into
mainfrom
ci/release-retry-safe
Jun 28, 2026
Merged

ci(release): make the release workflow retry-safe#24
CameronBrooks11 merged 1 commit into
mainfrom
ci/release-retry-safe

Conversation

@CameronBrooks11

Copy link
Copy Markdown
Member

The 0.1.0 run created the tag v0.1.0 and the GitHub Release, then PyPI rejected the upload (400: Non-user identities cannot create new projects — a pending-publisher project-name mismatch, an account-side fix). Recovering would have needed manual tag deletion.

Makes the mutating steps idempotent so a corrected re-run finishes the publish cleanly:

  • existing tag → notice, not a hard fail (validate)
  • tag creation skipped if present
  • skip-existing: true on the PyPI upload

softprops/action-gh-release already updates an existing Release. No version change.

A release can fail late (the 0.1.0 run created the tag + GitHub Release,
then PyPI rejected the upload over a pending-publisher project-name
mismatch). Recovering required deleting the tag by hand. Make every
mutating step idempotent so a fixed re-run completes the publish:

- validate: an existing tag is a notice, not a hard failure
- tag creation is skipped when the tag already exists
- PyPI publish uses skip-existing

softprops/action-gh-release already updates an existing Release.
@CameronBrooks11
CameronBrooks11 merged commit cde01aa into main Jun 28, 2026
5 checks passed
@CameronBrooks11
CameronBrooks11 deleted the ci/release-retry-safe branch June 28, 2026 00:32
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