Skip to content

Commit 004cf1d

Browse files
authored
doc: release policy and versioning (#288)
Adds documentation that explains how we think about releases of the application and Helm Charts and when we will bump major, minor and patch versions for both Application and Chart Releases. Closes #264 --------- Signed-off-by: Jay Pipes <jay.pipes@temporal.io>
1 parent c09c580 commit 004cf1d

2 files changed

Lines changed: 70 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ The Temporal Worker Controller eliminates this operational overhead by automatin
145145

146146
| Document | Description |
147147
|-------------------------------------------------------------|-----------------------------------------------------------------------|
148+
| [Releases](docs/release.md) | How we version and release the controller and Helm Chart |
148149
| [Migration Guide](docs/migration-to-versioned.md) | Step-by-step guide for migrating from traditional deployments |
149150
| [Reversion Guide](docs/migration-to-unversioned.md) | Step-by-step guide for migrating back to unversioned deployment |
150151
| [CD Rollouts](docs/cd-rollouts.md) | Helm, kubectl, ArgoCD, and Flux integration for steady-state rollouts |

docs/release.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Releases
2+
3+
This document explains our thinking around Releases of Temporal Worker
4+
Controller and associated Helm Charts.
5+
6+
A Release is a coordination point for publishing a versioned set of artifacts.
7+
Each Release has a Github Release page which describes the changes in the
8+
Release and the artifacts associated with it.
9+
10+
A Release Tag is simply the string name given to the Release.
11+
12+
In the Temporal Worker Controller project, we cut two different kinds of Releases:
13+
14+
* **Application Release**: contains the Temporal Worker Controller container image.
15+
* **Chart Release**: contains the Helm Charts that install the Temporal Worker
16+
Controller and the Custom Resource Definitions (CRDs) used by the controller.
17+
18+
These different kinds of Releases are on different cadences and use different
19+
version numbering.
20+
21+
## Application Releases
22+
23+
Application Releases refer to the Temporal Worker Controller code and the
24+
`temporalio/temporal-worker-controller` container image artifacts.
25+
26+
Release Tags for official Application Releases will always use Semantic Version
27+
strings, e.g. `v1.42.1`.
28+
29+
We bump the minor version number of the Application Release version when new
30+
features are added **to the controller code itself**.
31+
32+
Likewise, We bump the patch version number of the Application Release version
33+
when bug fixes are added to the controller code itself.
34+
35+
> **IMPORTANT**: Changes to the Application Release version string's minor and
36+
> patch versions **do not imply a change to either the Helm Chart Release
37+
> version or the APIVersion of the CRDs supported by the controller**.
38+
39+
## Chart Releases
40+
41+
Chart Releases refer to the two Helm Charts that install the Temporal Worker
42+
Controller and manage the Custom Resource Definitions (CRDs) used by the
43+
controller.
44+
45+
Release Tags for official Chart Releases are prefixed with the string `helm-`
46+
and the Semantic Version string for the Chart Release, e.g. `helm-v0.24.0`.
47+
48+
**The major version of the Semantic Version string for the Chart Release refers
49+
to the APIVersion of the CRDs.**
50+
51+
While the APIVersion of the CRDs is on the `v1alpha` series, the major version
52+
of the Semantic Version string for the Chart Release will remain on `v0`.
53+
54+
When the APIVersion of the CRDs moves to the `v1` series, the major version of
55+
the Semantic Version string for the Chart Release will be bumped to `v1`.
56+
57+
The minor version of the Semantic Version string for the Chart Release is
58+
bumped when we change the structure of the Helm Chart itself -- by adding,
59+
removing or modifying `values.yaml` options or adding, removing or modifying
60+
Kubernetes resources in the `templates/` directory.
61+
62+
The patch version of the Semantic Version string for the Chart Release is
63+
bumped when we release a new Application Release and update the `Chart.yaml`'s
64+
`appVersion` field to point to a new Application Release.
65+
66+
We will *always* cut a new Chart Release patch version for each new Application
67+
Release. However, the Chart Release patch version may not be cut at the exact
68+
same *time* as the Application Release. In this way, we can test the Helm Chart
69+
release process in isolation from the Application release process.

0 commit comments

Comments
 (0)