|
1 |
| -# Typha release artifacts |
2 |
| - |
3 |
| -Running the main `make release` target, described below, guides you |
4 |
| -through creating and distributing the following artifacts: |
5 |
| - |
6 |
| -- A git tag for the release, annotated with the release note; ready to |
7 |
| - push to Github. |
8 |
| -- File `bin/calico-typha`; the static binary relase, which we attach to |
9 |
| - the GitHub release. |
10 |
| -- Docker container images: `calico/typha:$VERSION` and |
11 |
| - `quay.io/calico/typha:$VERSION` containing the Typha binaries. These |
12 |
| - are ready to push to Dockerhub and Quay. |
13 |
| - |
14 |
| -# Typha release process |
15 |
| - |
16 |
| -In a nutshell: |
17 |
| - |
18 |
| -- We make a Typha release by creating and pushing an annotated Git tag. The |
19 |
| - name of the tag is the Typha version for that release, and the tag content is |
20 |
| - the release notes. |
21 |
| - |
22 |
| -- There are no hardcoded version numbers anywhere in the codebase (except in |
23 |
| - packaging files, as described next). Instead, build processes generate a |
24 |
| - unique and monotonic Typha version number from the last Git tag and the |
25 |
| - number of commits since that tag - equally whether they are processing |
26 |
| - release code (i.e. there is a release tag on HEAD) or code in between |
27 |
| - releases, or since the last release. |
28 |
| - |
29 |
| -So, to make a Typha release: |
30 |
| - |
31 |
| -- Consider whether you should update the libcalico-go pin in glide.yaml. |
32 |
| - If you do so, you should run `make update-vendor` to update the |
33 |
| - `glide.lock` file. Be wary of any additional libraries that get |
34 |
| - revved if they aren't being pulled in by the libcalico-go update. At |
35 |
| - this late stage, it's safer to only update commit IDs that you're |
36 |
| - explicitly expecting (i.e. undo any changes that `make update-vendor` |
37 |
| - makes that you weren't expecting). If in doubt consult a Typha/glide |
38 |
| - expert! |
39 |
| - |
40 |
| -- Run `make release VERSION=<new version>` and follow the instructions. This |
41 |
| - creates the annotated release tag, builds the release artifacts, and tells |
42 |
| - you what else you need to do to publish those. The release script |
43 |
| - expects a version number of the form "2.0.0", with optional suffixes |
44 |
| - such as "-beta1-rc3". |
| 1 | +# Release process |
| 2 | + |
| 3 | +## Resulting artifacts |
| 4 | + |
| 5 | +* `bin/calico-typha-amd64` - the static binary relase, which we attach to the GitHub release. |
| 6 | + |
| 7 | +* `calico/typha:$VERSION` container images (and the quay.io variant) |
| 8 | + |
| 9 | +## Preparing for a release |
| 10 | + |
| 11 | +Checkout the branch from which you want to release. For a major or minor release, |
| 12 | +you will need to create a new `release-vX.Y` branch based on the target Calico version. |
| 13 | + |
| 14 | +Make sure the branch is in a good state, e.g. Update any pins in glide.yaml, create PR, ensure tests pass and merge. |
| 15 | + |
| 16 | +You should have no local changes and tests should be passing. |
| 17 | + |
| 18 | +## Creating a patch release |
| 19 | + |
| 20 | +1. Choose a version e.g. `v1.0.1` |
| 21 | + |
| 22 | +1. Create the release. This will generate release notes, a tag, build the code, and verify the artifacts. |
| 23 | + |
| 24 | + ``` |
| 25 | + make VERSION=v1.0.1 release |
| 26 | + ``` |
| 27 | + |
| 28 | +1. Publish the release. |
| 29 | + |
| 30 | + ``` |
| 31 | + make VERSION=v1.0.1 release-publish |
| 32 | + ``` |
| 33 | + |
| 34 | +1. Publish the release on GitHub by following the link printed to screen. |
| 35 | + - Copy the tag description, press edit, and paste it into the release body. |
| 36 | + - Remove or clean up any messy commits - e.g. libcalico-go updates. |
| 37 | + - Title the release the same as the tag - e.g. `v1.0.1` |
| 38 | + - Press "Publish release" |
| 39 | + |
| 40 | +1. If this is the latest stable release, perform the following step to publish the `latest` images. **Do not perform |
| 41 | + this step for patches to older releases.** |
| 42 | + |
| 43 | + ``` |
| 44 | + make VERSION=<version> release-publish-latest |
| 45 | + ``` |
| 46 | + |
| 47 | +## Creating a major / minor release |
| 48 | + |
| 49 | +1. Choose a version e.g. `v1.1.0` |
| 50 | + |
| 51 | +1. Create the release. This will generate release notes, a tag, build the code, and verify the artifacts. |
| 52 | + |
| 53 | + ``` |
| 54 | + make VERSION=v1.1.0 PREVIOUS_RELEASE=v1.0.0 release |
| 55 | + ``` |
| 56 | + |
| 57 | +1. Publish the release. |
| 58 | + |
| 59 | + ``` |
| 60 | + make VERSION=v1.1.0 release-publish |
| 61 | + ``` |
| 62 | + |
| 63 | +1. Publish the release on GitHub by following the link printed to screen. |
| 64 | + - Copy the tag description, press edit, and paste it into the release body. |
| 65 | + - Remove or clean up any messy commits - e.g. libcalico-go updates. |
| 66 | + - Title the release the same as the tag - e.g. `v1.1.0` |
| 67 | + - Press "Publish release" |
| 68 | + |
| 69 | +1. If this is the latest stable release, perform the following step to publish the `latest` images. **Do not perform |
| 70 | + this step for patches to older releases.** |
| 71 | + |
| 72 | + ``` |
| 73 | + make VERSION=<version> release-publish-latest |
| 74 | + ``` |
0 commit comments