This document explains how a release of meshtastic-sdk is cut and published.
Versions follow SemVer 2.0.0.
Pre-1.0 SemVer is interpreted per docs/versioning.md:
breaking changes bump MINOR, additive changes bump PATCH.
The project version is derived from git tags by
axion-release,
configured in the root build.gradle.kts. Tag scheme: vMAJOR.MINOR.PATCH.
- Exact tag on
HEAD→ version isMAJOR.MINOR.PATCH(publishable). - Commits past the latest tag, or a dirty tree →
MAJOR.MINOR.PATCH-SNAPSHOT. - Override at runtime:
./gradlew publish -Prelease.version=X.Y.Z.
Confirm the resolved version at any time:
./gradlew currentVersionTrunk-based. Releases are tagged on main. There is no long-lived
release branch — hotfixes branch from the release tag, land on main,
and a new patch tag is cut.
- Sync
mainand run the gate:git checkout main && git pull --ff-only ./gradlew check - Promote the changelog. In
CHANGELOG.md, move the contents of the[Unreleased]section into a new[X.Y.Z] — YYYY-MM-DDsection, leaving an empty[Unreleased]block above it. - (If public API changed) confirm the regenerated baselines are
committed:
./gradlew updateKotlinAbi git status -- '**/api/*.api' '**/api/*.klib.api'
- Commit the changelog bump:
git commit -s -m "chore(release): vX.Y.Z" - Tag and push:
git tag -a vX.Y.Z -m "vX.Y.Z" git push origin main git push origin vX.Y.Z - Publish. All workflows are currently disabled (
.yml.disabled) for the internal 0.1.0 team-share, so publish manually:Once./gradlew publish
.github/workflows/release.ymlis re-enabled before the public push, pushing the tag will triggerpublishAllPublicationsToInternalRepositoryautomatically.
git checkout -b hotfix/vX.Y.Z+1 vX.Y.Zfrom the affected tag.- Land the fix; merge or cherry-pick onto
main. - From
main, run the standard release checklist with the next patch number.
A tag is the only durable artifact. To withdraw a release, publish a
X.Y.Z+1 that supersedes it and yank the broken artifact from the
Maven repository per its policy. Do not delete or move tags once
pushed — downstream consumers may have pinned to them.
docs/versioning.md— SemVer interpretation, ABI policydocs/ci-cd.md— workflows and gatesdocs/decisions/004-licensing.md— license terms publishers must keep intact