minio / kes

Key Managament Server for Object Storage and more
https://min.io/docs/kes/concepts/
GNU Affero General Public License v3.0
460 stars 97 forks source link

use commit-time based release tags instead of semver for server #305

Closed aead closed 1 year ago

aead commented 1 year ago

This commit changes the KES CLI and server versioning scheme from semver to a rolling release model where the server version is the RFC3339 commit timestamp.

In general, semver is useful for libraries, like the KES SDK, to signal compatibility and API breaking changes. However, it is less useful for a server and CLI. Further, the KES repo contains the SDK as well as the CLI and server code. If, for example, there would be a breaking change in the SDK but not in the CLI or server API we still would create a new major release of the KES server and CLI. Likewise vice-versa.

Hence, we separate the SDK and CLI/server versioning. The SDK continuous to use semver. However, the CLI and server will use rolling release versioning.

In particular, the CLI and server version is now the time of the last commit. For example: 2022-12-01T11-40-08Z.

This allows snapshot and hotfix releases at any point in time without implications on the SDK semver. Also, this information is automatically available in the Go binary. Ref: go version -m <binary>

    build   vcs=git
    build   vcs.revision=57f3264adef1230eec345fb770de21b44181250f
    build   vcs.time=2022-12-01T11:40:08Z

We convert the RFC3339 time format by replacing all ':' with '-' since git tags and docker image names cannot contain a ':'.