This document describes how to release a new version of sabakan.
Sabakan has two kind of versions: API version and schema version.
API version should follow semantic versioning 2.0.0 to choose the new version number. It is also used for archive versions.
Schema version is a positive integer. It must be incremented when some data format has been changed.
Add notable changes since the last release to CHANGELOG.md. It should look like:
(snip)
## [Unreleased]
### Added
- Implement ... (#35)
### Changed
- Fix a bug in ... (#33)
### Removed
- Deprecated `-option` is removed ... (#39)
(snip)
When a backward-incompatible change is to be merged to main
, the schema version must be incremented
and conversion from old schema need to be implemented.
- Increment
SchemaVersion
in version.go by 1. - Increment schema version at the top of docs/schema.md by 1.
- Add conversion method from old schema. Example: models/etcd/convert2.go.
- Call the conversion method from
driver.Upgrade
defined in models/etcd/schema.go.
-
Determine a new API/program version number. Let it write
$VERSION
asVERSION=x.y.z
. -
Make a branch to release
$ git neco dev "$VERSION"
-
Edit
CHANGELOG.md
for the new version (example). -
Update
Version
constant in version.go. -
Commit the change and push it.
$ git commit -a -m "Bump version to $VERSION" $ git neco review
-
Merge this branch.
-
Add a git tag to the main HEAD, then push it.
$ git checkout main $ git pull $ git tag -a -m "Release v$VERSION" "v$VERSION" $ git push origin "v$VERSION"
GitHub actions will build and push artifacts such as container images and create a new GitHub release.