Update RELEASING doc

This commit is contained in:
Tim Hockin 2021-06-24 09:00:10 -07:00
parent dcbebf05b3
commit 22727fb813
1 changed files with 88 additions and 18 deletions

View File

@ -1,25 +1,95 @@
# Cutting a release
## Tags
First, see what has been tagged:
```
$ git tag
v2.0.0
v2.0.1
v2.0.2
v2.0.3
v2.0.4
# Pick the next release number
$ git tag -am "v2.0.5" v2.0.5
$ make manifest-list
<...lots of output...>
Successfully tagged staging-k8s.gcr.io/git-sync:v2.0.5__linux_amd64
<...lots of output...>
v2.0.5__linux_amd64: digest: sha256:74cd8777ba08c7b725cd2f6de34a638ba50b48cde59f829e1dc982c8c8c9959a size: 951
pushed: staging-k8s.gcr.io/git-sync:v2.0.5__linux_amd64
<...lots of output...>
Digest: sha256:4d338888373809661b5a29314ca8024379b77c0afb53fd66d6821cf628f75438 433
v3.2.0
v3.2.1
v3.2.2
v3.3.0
v3.3.1
```
Pick the next release number and tag it.
```
$ git tag -am v3.3.2 v3.3.2
```
## Build and push to staging
To build git-sync you need [docker buildx](https://github.com/docker/buildx)
and to cut a release you need
[manifest-tool](https://github.com/estesp/manifest-tool). At the time of this
writing, manifest-tool is broken at head and doesn't support go modules yet:
```
$ GO111MODULE=off go get github.com/estesp/manifest-tool/cmd/manifest-tool
$ cd "$(go env GOPATH)/src/github.com/estesp/manifest-tool"
$ git checkout v1.0.3
Note: switching to 'v1.0.3'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 505479b Merge pull request #101 from estesp/prep-1.0.3
$ GO111MODULE=off go install .
```
The following step will build for all platforms and push the container images
to our staging repo (gcr.io/k8s-staging-git-sync).
```
$ make manifest-list
<...lots of output...>
Successfully tagged gcr.io/k8s-staging-git-sync/git-sync:v3.3.2__linux_amd64
<...lots of output...>
v3.3.2__linux_amd64: digest: sha256:74cd8777ba08c7b725cd2f6de34a638ba50b48cde59f829e1dc982c8c8c9959a size: 951
pushed: gcr.io/k8s-staging-git-sync/git-sync:v3.3.2__linux_amd64
<...lots of output...>
Digest: sha256:853ae812df916e59a7b27516f791ea952d503ad26bc8660deced8cd528f128ae 433
```
Take note of this final sha256.
## Promote the images
Make a PR against
https://github.com/kubernetes/k8s.io/blob/main/k8s.gcr.io/images/k8s-staging-git-sync/images.yaml
and add the sha256 and tag name from above. For example:
```
- name: git-sync
dmap:
+ "sha256:853ae812df916e59a7b27516f791ea952d503ad26bc8660deced8cd528f128ae": ["v3.3.2"]
"sha256:95bfb980d3b640f6015f0d1ec25c8c0161d0babcf83d31d4c0453dd2b59923db": ["v3.3.1"]
"sha256:5f3d12cb753c6cd00c3ef9cc6f5ce4e584da81d5210c15653644ece675f19ec6": ["v3.3.0"]
"sha256:6a543fb2d1e92008aad697da2672478dcfac715e3dddd33801d772da6e70cf24": ["v3.2.2"]
```
When that PR is merged, the promoter bot will copy the images from staging to
the final prod location (e.g. k8s.gcr.io/git-sync/git-sync:v3.3.2).
## Make a GitHub release
Lastly, make a release through the [github UI](https://github.com/kubernetes/git-sync/releases).
Include all the notable changes since the last release and the final container
image location.