|
| 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