This project uses EasyBuild.ShipIt for release automation and Conventional Commits for versioning.
PR titles must follow the conventional commit format (enforced by CI):
| Prefix | Version bump | Example |
|---|---|---|
feat: |
minor | feat: add Pydantic field validators |
fix: |
patch | fix: correct FastAPI response type |
feat!: |
major | feat!: rename Flask decorator |
chore: |
patch | chore: update dependencies |
docs: |
patch | docs: update README |
refactor: |
patch | refactor: simplify JSON bindings |
Other valid prefixes: test, perf, ci, build, style, revert.
Releases are driven automatically by the Publish NuGet workflow on pushes to
main. ShipIt opens a chore: release ... PR that bumps the version in
CHANGELOG.md; merging that PR triggers the publish job, which packs and pushes
the NuGet package.
To run ShipIt locally (for example to preview the next version or cut a release manually):
just shipitThis will:
- Analyze commits since the last release
- Determine the next semantic version
- Update
CHANGELOG.md - Create a GitHub release with the version tag (e.g.
v5.0.0-rc.3)
Merging a ShipIt release PR (or publishing a release tag) triggers the workflow to:
- Pack the NuGet package (
Fable.Python) using the version fromCHANGELOG.md - Push it to nuget.org using the
NUGET_API_KEYsecret
NUGET_API_KEYrepository secret (glob pattern:Fable.Python*)GITHUB_TOKENorghCLI authenticated (for ShipIt to create releases)