|
1 | 1 | # Releasing |
2 | 2 |
|
3 | | -## Steps |
4 | | - |
5 | 3 | To cut a new kpt release perform the following: |
6 | 4 |
|
7 | | -- Ensure kpt is importing the latest dependent releases |
8 | | - - [cli-utils](https://github.com/kubernetes-sigs/cli-utils/tree/master/release) |
9 | | - - Within kustomize: |
10 | | - [kyaml](https://github.com/kubernetes-sigs/kustomize/blob/master/releasing) |
11 | | - - Within kustomize: |
12 | | - [cmd/config](https://github.com/kubernetes-sigs/kustomize/blob/master/releasing) |
13 | | - - Update `go.mod` file with correct versions of `cli-utils`, `kyaml`, and |
14 | | - `cmd/config` |
15 | | - - Run `make all` (which should update `go.sum` and run `go mod tidy`) |
16 | | - - Create a `kpt` PR with previous `go.mod` and `go.sum` changes, and submit. |
17 | | - [Example PR](https://github.com/kptdev/kpt/pull/594) |
18 | | -- Fetch the latest master changes to a clean branch |
19 | | - - `git checkout -b release` |
20 | | - - `git fetch upstream` |
21 | | - - `git reset --hard upstream/master` |
22 | | -- Tag the commit |
23 | | - - `git tag v1.0.0-(alpha|beta|rc).*` |
24 | | - - `git push upstream v1.0.0-(alpha|beta|rc).*` |
25 | | -- This will trigger a Github Action that will use goreleaser to make the |
26 | | - release. The result will be a github release in the draft state and upload |
27 | | - docker images to GCR. |
28 | | - - Verify that the release looks good. If it does, publish the release through |
29 | | - the github UI. |
30 | | -- Update the Homebrew release |
31 | | - - `go run ./release/formula/main.go <tag>` (example: `go run ./release/formula/main.go v1.0.0-beta.31`) |
32 | | - - `git add . && git commit -m "update homebrew to <tag>"` |
33 | | - - create a PR for this change and merge it |
34 | | - - [example PR](https://github.com/kptdev/kpt/pull/331/commits/baf33d8ed214f2c5e106ec6e963ad736e5ff4d98#diff-d69e3adb302ee3e84814136422cbf872) |
35 | | - |
36 | | -## Artifacts |
| 5 | +- Check that dependencies are up to date and that all required release content is in the main branch |
| 6 | +- Navigate to [the project release page](https://github.com/kptdev/kpt/releases) and select "draft new release" |
| 7 | +- Leave the target as "main", and create a new tag to match the release version |
| 8 | + - Versioning follows [semantic versioning rules](http://semver.org/) |
| 9 | + - Alpha and beta versions are used to make releases before content is fully stabilized |
| 10 | + - Increment the number after "alpha" or "beta" by one when making this type of release - e.g. v1.0.0-beta.58 could come after v1.0.0-beta.57 |
| 11 | +- Release title should be left blank - it will be auto-filled from the tag |
| 12 | +- Click "Generate release notes" to auto-generate the content of the release. Edit this as appropriate to add extra context |
| 13 | +- If the release is an alpha or beta release and there is already a stable version available, the "set as a pre-release" check-box should be checked. Otherwise, leave it checked as "set as the latest release" |
| 14 | +- Check the "create a discussion for this release" check-box |
| 15 | +- Click "publish" and then verify that the github action has run and the artefacts have been produced |
37 | 16 |
|
38 | | -Release artifacts such as binaries and images will be built automatically by the |
39 | | -Github Action. The binaries linked from the README.md docs will be automatically |
40 | | -updated because they point to the `latest` binaries which are updated for tagged |
41 | | -releases. Images created from the `main` branch will not be tagged with |
42 | | -`latest`. |
0 commit comments