Two workflows in .github/workflows/:
- Matrix: Python 3.10 / 3.11 / 3.12
pytest+ruff check- Builds sdist + wheel as a sanity check (uploaded as artifact, 7d retention)
agentprod is a path dep, which CI doesn't have by default. The workflow
clones it from GitHub into ../agentprod, falling back to a tiny stub if
the repo is still private.
- Builds dist
- Verifies tag matches
pyproject.toml[project].version - Publishes to PyPI via trusted publishing (no API token in repo)
- Creates a GitHub release with auto-generated notes
- Create an account on https://pypi.org/ (if not already)
- Reserve the
koreanpulseproject name by uploading manually once or request a project name (PyPI will allow first publish via trusted publisher if the name is available) - On PyPI: Your projects → koreanpulse → Publishing → Add a new pending
publisher
- Owner:
whdrnr2583-cmd - Repository name:
koreanpulse - Workflow filename:
release.yml - Environment name:
pypi
- Owner:
- On GitHub: Settings → Environments → New environment →
pypi- Optional: add required reviewers so a release tag still needs your manual approval before it pushes to PyPI
After that, every git push origin v0.1.0 cleanly publishes.
# Update version in pyproject.toml first, then:
git commit -am "release v0.1.0"
git tag v0.1.0
git push origin main --tagsThe release workflow takes ~2 minutes end-to-end.