Skip to content

Commit 843a992

Browse files
authored
Guidelines for non-strict semver (#265) (#281)
* Guidelines for non-strict semver (#265) * Fix extraneous bracket in readme
1 parent b2fb80c commit 843a992

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ Manage [RabbitMQ](https://www.rabbitmq.com/) clusters deployed to [Kubernetes](h
88

99
The operator deploys RabbitMQ `3.8.5`, and requires a Kubernetes cluster of `1.16` or above.
1010

11+
## Versioning
12+
13+
RabbitMQ Cluster Kubernetes Operator follows non-strict [semver](https://semver.org/). More details about other versioning strategies that were considered can be found
14+
[here](https://github.com/rabbitmq/cluster-operator/blob/main/docs/proposals/20200806-versioning-release-strategy.md).
15+
16+
[Here](version_guidelines.md) are some guidelines on how we implement non-strict semver. The version number MAY or MAY NOT follow the semver rules. Hence, we highly recommend to read
17+
the release notes to understand the changes and their potential impact for any release.
18+
1119
## Quickstart
1220

1321
### Deploying on KinD

version_guidelines.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
### RabbitMQ Cluster Kubernetes Operator Versioning Scheme
2+
---
3+
RabbitMQ Cluster Kubernetes Operator follows non-strict semver. More details about other versioning strategies that were considered can be found
4+
[here](https://github.com/rabbitmq/cluster-operator/blob/main/docs/proposals/20200806-versioning-release-strategy.md). This document explains the non-strict semver versioning scheme used by RabbitMQ Cluster Kubernetes Operator.
5+
6+
_**Operator** refers to *RabbitMQ Cluster Kubernetes Operator* in the document henceforth._
7+
8+
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in
9+
this document are to be interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119).
10+
11+
:warning: **Please note that these are only guidelines which MAY NOT be always followed. Users MUST read the release notes to understand the changes and the potential impact of these changes.**
12+
13+
1. A normal version number MUST take the form X.Y.Z where X, Y, and Z are non-negative integers, and MUST NOT contain leading zeroes.
14+
X is the major version, Y is the minor version, and Z is the patch version. Each element MUST increase numerically. For instance: 1.9.0 -> 1.10.0 -> 1.11.0.
15+
16+
2. Major version zero (0.y.z) is for initial development. This is a Beta version and anything MAY change at anytime. The Operator SHOULD NOT be considered stable.
17+
18+
3. Version 1.0.0 defines the GA/stable version of Operator. The way in which the version number is incremented after this release is dependent
19+
on how the Operator changes.
20+
21+
4. Patch version Z (x.y.Z | x > 0) MUST be incremented if only backwards compatible bug fixes and/or CVE fixes are introduced.
22+
A bug fix is defined as an internal change that fixes incorrect behavior.
23+
24+
5. Minor version Y (x.Y.z | x > 0):
25+
- It MUST be incremented if new, functionality is introduced to the Operator. The new functionality MAY contain breaking changes.
26+
- It MUST be incremented if any OPERATOR functionality is marked as deprecated.
27+
- It MUST be incremented if underlying Kubernetes server version and/or RabbitMQ version are marked as supported and/or deprecated.
28+
- It MAY contain breaking changes. Breaking changes MUST be documented in the release notes.
29+
- It MAY include patch level changes. Patch version MUST be reset to 0 when minor version is incremented.
30+
31+
6. Major version X (X.y.z | X > 0):
32+
- It MAY be incremented if any backwards incompatible changes are introduced to the public API.
33+
- It MAY also include minor and patch level changes. Patch and minor version MUST be reset to 0 when major version is incremented.

0 commit comments

Comments
 (0)