Release checklist
Before you start
- [ ] All intended changes are merged to
main - [ ]
uv run pytestpasses locally (831 passed as of v0.10.7) - [ ] CI badge on
mainis green
1. Decide the version number
| Change type | Bump |
|---|---|
| Breaking CLI change (rename, remove command) | minor (0.X.0) |
| New command or flag | minor (0.X.0) |
| Bug fix, docs, internal refactor | patch (0.X.Y) |
We are pre-1.0 so breaking changes bump minor, not major.
2. Update version and changelog
# pyproject.toml
version = "X.Y.Z"
# CHANGELOG.md — add a new section at the top:
## [X.Y.Z] — YYYY-MM-DD
### Breaking / Added / Fixed / Docs
- ...
Commit:
git add pyproject.toml CHANGELOG.md
git commit -m "chore: bump to X.Y.Z"
3. Push and wait for CI
git push origin main
Watch the CI workflow. Do not tag until CI is green.
4. Tag and push the release tag
Tags must be prefixed with v — the Release workflow triggers on v*:
git tag vX.Y.Z
git push origin vX.Y.Z
This kicks off release.yml: test → build wheel → publish to PyPI.
5. Verify the release
Watch release.yml
complete all four jobs: test, build, publish, github-release.
The github-release job creates the GitHub Release automatically using the
relevant CHANGELOG section as the release notes — no manual step needed.
After publish, artifact.yml fires automatically and:
- Installs just-makeit==X.Y.Z from PyPI (retries for up to 10 min for CDN propagation)
- Scaffolds the fir_filter standalone workflow end-to-end (cmake build + test)
- Scaffolds the filter_module module/object workflow end-to-end
- Installs and verifies the C library via pkg-config and CMake find_package
If artifact.yml fails due to CDN lag it will auto-retry; if it fails for
any other reason, investigate before the next release.
6. Post-release
- [ ] Confirm
pip install just-makeit==X.Y.Zworks locally - [ ] GitHub repo top-right shows the new version as "Latest release"
- [ ] Docs site rebuilt and live at https://just-buildit.github.io/just-makeit/
Common pitfalls
| Mistake | Fix |
|---|---|
Pushed tag without v prefix |
Push vX.Y.Z — release workflow ignores bare version tags |
| Tagged before CI green | Delete the tag locally and on remote, fix CI, re-tag |
PyPI CDN lag causes artifact.yml to fail |
Wait — retry loop runs for 10 min; if it still fails, check the logs |
artifact.yml uses old CLI flags |
Keep artifact.yml in sync with any CLI renames |
| GitHub repo still shows old version | github-release job failed — check the Actions log and re-run, or create manually with gh release create vX.Y.Z --latest |
To delete a tag and re-tag:
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
# fix the issue, then:
git tag vX.Y.Z
git push origin vX.Y.Z