Skip to content

feat(release): derive versions from commit history - #76

Merged
danielkov merged 1 commit into
mainfrom
feat/automatic-release-versioning
Sep 1, 2026
Merged

feat(release): derive versions from commit history#76
danielkov merged 1 commit into
mainfrom
feat/automatic-release-versioning

Conversation

@danielkov

@danielkov danielkov commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Derive each release version from Conventional Commit history since the latest published release. The release workflow now prepares one versioned candidate, builds every artifact from it, and atomically advances main together with the release tag.

Motivation

Per-PR version bumps conflict across parallel workstreams and assign a separate version to every merged change. This groups all non-breaking changes into one patch release while promoting any ! or BREAKING CHANGE: commit to a minor release.

Impact

Ordinary pull requests must stop editing release versions and use Conventional Commit titles. Merge this PR only after the final manually versioned release tag matches Cargo.toml.

Technical details

Version selection

A dependency-free calculator validates landed commit subjects, applies one patch bump by default, and lets a breaking commit select a minor bump. CI exercises patch, bang, body-footer, invalid-history, and invalid-range cases, while the required test job validates PR titles.

Release candidate

The workflow updates Cargo.toml and Cargo.lock in an unpushed release commit and transports that commit to Linux, macOS, release-note, and container jobs with an incremental Git bundle. After all required builds succeed, a leased atomic push advances main and creates the tag together; failed publication can resume from the existing release commit.

@danielkov
danielkov force-pushed the feat/automatic-release-versioning branch from 905a0e7 to 8b0a3ed Compare September 1, 2026 15:01
@danielkov
danielkov merged commit 03dea80 into main Sep 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant