- Clean working tree (
git statusshows no changes) - All tests pass (
uv run pytest) - Lint clean (
uv run ruff check src/ tests/) - On
mainbranch - PyPI trusted publisher configured for
jetm/shipcheckwith workflowpublish.yml
Add entries under ## [Unreleased] describing what changed. Use Keep a Changelog format:
## [Unreleased]
### Added
- New feature description
### Changed
- Changed behavior description
### Fixed
- Bug fix descriptionCommit the changelog update before bumping.
bump-my-version handles everything atomically: updates pyproject.toml,
src/shipcheck/__init__.py, and CHANGELOG.md, then commits and tags.
# Patch release (0.0.2 -> 0.0.3)
uv run bump-my-version bump patch
# Minor release (0.0.x -> 0.1.0)
uv run bump-my-version bump minor
# Major release (0.x.y -> 1.0.0)
uv run bump-my-version bump majorThis creates a commit "Bump version: X.Y.Z -> A.B.C" and a vA.B.C tag.
The CHANGELOG ## [Unreleased] header is preserved, and a new dated
version header is inserted below it.
git push origin main --follow-tagsThis pushes the commit and the tag. The tag triggers the publish.yml
GitHub Actions workflow which builds and publishes to PyPI automatically.
- Check GitHub Actions: publish workflow should pass
- Check PyPI:
pip install shipcheck==A.B.Cshould work - Check CLI:
shipcheck --helpshould show the new version
- 0.0.x: Alpha releases during Phase 1 development
- 0.1.0: First public release (after blog post and announcement)
- 0.x.y: Pre-1.0 releases, minor bumps for new checks/features
- 1.0.0: Stable release with full CRA check coverage
- Do not create tags manually (
git tag vX.Y.Z) - use bump-my-version - Do not edit version strings in files manually - bump-my-version handles all three locations
- Do not push tags separately from commits - use
--follow-tags