Versioning Guide¶
1. Category¶
Semantic Versioning (SemVer)¶
Semantic Versioning (SemVer) and Conventional Commits are commonly combined to automate version tags and CHANGELOG.md updates in release pipelines.
1.1. Release¶
Semantic Versioning (SemVer) uses a three-component version format MAJOR.MINOR.PATCH.
-
Components and Features
-
MAJORIncrements when incompatible changes are introduced.
Example:
1.0.0->2.0.0 -
MINORIncrements when new backward-compatible functionality is added.
Example:
1.0.0->1.1.0 -
PATCHIncrements when backward-compatible fixes are introduced.
Example:
1.0.0->1.0.1
-
-
Rules
- Commit messages should follow Conventional Commits to enable release tooling to detect change types.
- Versioning should follow the
MAJOR.MINOR.PATCHformat, incrementing according to the nature of changes introduced in the release. - The release workflow should create a version tag and update
CHANGELOG.md.
1.2. Pre-release¶
Pre-release identifiers can be appended to the next target version to indicate that the release is not yet stable.
-
Components and Features
-
rcRelease candidate identifier.
Example progression:
1.0.0->1.1.0-rc.1->1.1.0-rc.2->1.1.0 -
nextDistribution channel identifier for iterative upcoming releases.
Example progression:
1.0.0->1.1.0-next.1->1.1.0-next.2->1.1.0 -
alphaUnstable pre-release identifier for early testing.
Example progression:
1.0.0->1.1.0-alpha.1->1.1.0-alpha.2->1.1.0 -
betaMore stable pre-release identifier for broader testing.
Example progression:
1.0.0->1.1.0-beta.1->1.1.0-beta.2->1.1.0
-
-
Rules
- Pre-release versions are created from the next planned release version.
- Numeric suffixes (
.1,.2, ...) should increment sequentially per identifier. - Promoting to stable removes the pre-release suffix and publishes the final version.
2. References¶
- Sentenz Versioning article.
- Sentenz Commit article.
- Sentenz Changelog article.