Releasing
The version is single-sourced from shuttle/__init__.py (__version__).
pyproject.toml reads it, so a tag, the built wheel and shuttle version
cannot disagree.
- Move the
## [Unreleased]entries inCHANGELOG.mdunder a new## [X.Y.Z] - YYYY-MM-DDheading. - Set
__version__ = "X.Y.Z"in the same PR. CI refuses a version that has no matching changelog section (scripts/check-changelog.py). - Merge, then tag the merge commit
vX.Y.Zand push the tag.
The release workflow then:
- refuses a tag that disagrees with
__version__; - runs the suite;
- builds the wheel and sdist, installs the wheel clean and checks it reports the tagged version;
- publishes the release with
checksums.txt, using that version's changelog section as the release notes.
After a release
- The unattended actuator on the fleet host installs the new release on its next tick (checksum-verified, command-tested, atomically promoted).
- caboodle installs only the version its member manifest pins. Move the pin
with
caboodle bump-member members/shuttle.tomlin a caboodle PR.