Skip to content

docs: add release-process checklist + PyPI Trusted Publisher setup#5

Merged
arnav2 merged 2 commits into
mainfrom
chore/release-process-doc
May 11, 2026
Merged

docs: add release-process checklist + PyPI Trusted Publisher setup#5
arnav2 merged 2 commits into
mainfrom
chore/release-process-doc

Conversation

@arnav2
Copy link
Copy Markdown
Collaborator

@arnav2 arnav2 commented May 11, 2026

Summary

Captures the one-time release infrastructure setup so the next maintainer doesn't have to reconstruct it from scratch. The release.yml workflow (already in main) assumes three things exist that aren't fully captured in code:

  1. A GitHub Environment named `pypi` ← already created via `gh api -X PUT repos/knowledgestack/ks-xlsx-parser/environments/pypi` (idempotent)
  2. A PyPI Trusted Publisher binding pointing at this repo + release.yml + the `pypi` environment ← still needs to be done manually on pypi.org (step 2 in the doc; not possible via API)
  3. Branch protection on `main` requiring CI green before merge ← optional, command in the doc

Without (2), tagging `v0.2.0` will create the GitHub Release fine but the PyPI publish step will fail at the OIDC handshake.

Test plan

  • Verify the `gh api PUT environments/pypi` command is idempotent (it is — confirmed)
  • Add the PyPI Trusted Publisher at https://pypi.org/manage/project/ks-xlsx-parser/settings/publishing/ following step 2
  • Optional: dry-run `gh workflow run release.yml` via workflow_dispatch on a throwaway branch to confirm the env is wired correctly
  • After all 3 setup steps are done, the next `git push origin vX.Y.Z` should run the full pipeline cleanly

Why this is a separate PR from #4

The v0.2.0 release PR (#4) ships the parser changes + benchmark + version bump. This PR is just docs — separating them keeps the release PR reviewable and lets this checklist land first so the maintainer has it in hand when tagging.

🤖 Generated with Claude Code

arnav2 and others added 2 commits April 25, 2026 18:50
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Captures the one-time setup (GitHub pypi environment + PyPI Trusted
Publisher binding + branch protection) and the per-release checklist
the maintainer should run through before tagging.

The pypi environment was already created via API; the PyPI-side
Trusted Publisher binding still has to be added manually on pypi.org
(it's not in git — see step 2 in the doc). Once that's done, tagging
vX.Y.Z auto-fires the release workflow end-to-end (build → GitHub
Release → PyPI publish).

Also documents common failure modes (yank, hotfix, redo-on-CI-red)
and the rationale for Trusted Publishing over a long-lived API token.
@arnav2 arnav2 merged commit acc71ab into main May 11, 2026
6 checks passed
arnav2 added a commit that referenced this pull request May 11, 2026
* docs(readme): make hero banner full width

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: add release-process checklist for v0.2.0+

Captures the one-time setup (GitHub pypi environment + PyPI Trusted
Publisher binding + branch protection) and the per-release checklist
the maintainer should run through before tagging.

The pypi environment was already created via API; the PyPI-side
Trusted Publisher binding still has to be added manually on pypi.org
(it's not in git — see step 2 in the doc). Once that's done, tagging
vX.Y.Z auto-fires the release workflow end-to-end (build → GitHub
Release → PyPI publish).

Also documents common failure modes (yank, hotfix, redo-on-CI-red)
and the rationale for Trusted Publishing over a long-lived API token.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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