Releasing¶
core-cpp follows Semantic Versioning with vX.Y.Z tags. While the major
version is 0, a minor release may break the API; every break is listed under Breaking in the
changelog with a migration note. A patch release never breaks.
What a release is¶
- The tag equals the version in
project(core-cpp VERSION X.Y.Z), andCHANGELOG.mdhas a## [X.Y.Z]section. The release workflow runstests/cmake/check-release.cmakeon the tag and refuses otherwise. - A release carries
core-cpp-vX.Y.Z-vendor.tar.gz, the vendoring file set of the tag, andSHA256SUMS. - CI opens a draft release with notes grouped by the pull requests'
type/labels. A person publishes it.
Cutting one¶
# 1. Move the [Unreleased] entries under "## [X.Y.Z] - YYYY-MM-DD" in CHANGELOG.md.
# 2. Set project(core-cpp VERSION X.Y.Z) in CMakeLists.txt.
# 3. Check before tagging:
cmake -DTAG=vX.Y.Z -DROOT=. -P tests/cmake/check-release.cmake
# 4. Commit, tag vX.Y.Z and push the tag; then review and publish the draft release.
The maintainers use the /draft-release and /publish-release skills for steps 1 to 4 and for
publishing; the checklist is in
releasing.md.
Pinning a release¶
Consumers pin a tag, or temporarily a full commit SHA, never a branch. See Using core-cpp with CPM and Vendoring.