docs: release checklist fixes from 0.36 (#10861)
Marcin Rataj committed
Jul 14, 2025 at 18:58 UTC
475e2bad6747fc2019e3bed92b99d99dac85ef1b
1 file changed
+28
-29
docs/RELEASE_CHECKLIST.md
+28
-29
@@ -1,4 +1,4 @@
1
-<!-- Last updated during [v0.33.0 release](https://github.com/ipfs/kubo/pull/10674) -->
1
+<!-- Last updated during [v0.36.0 release](https://github.com/ipfs/kubo/issues/10816) -->
2
3
# ✅ Release Checklist (vX.Y.Z[-rcN])
4
@@ -30,7 +30,7 @@ This section covers tasks to be done during each release.
30
31
### 1. Prepare release branch
32
33
-- [ ] Prepare the release branch and update version numbers accordingly
33
+- [ ] Prepare the release branch and update version numbers accordingly
34
- [ ] create a new branch `release-vX.Y.Z`
35
- use `master` as base if `Z == 0`
36
- use `release` as base if `Z > 0`
@@ -39,16 +39,16 @@ This section covers tasks to be done during each release.
39
- [ ] create a draft PR from `release-vX.Y.Z` to `release` ([example](https://github.com/ipfs/kubo/pull/9306))
40
- [ ] Cherry-pick commits from `master` to the `release-vX.Y.Z` using `git cherry-pick -x <commit>` ([example](https://github.com/ipfs/kubo/pull/10636/commits/033de22e3bc6191dbb024ad6472f5b96b34e3ccf))
41
- **NOTE:** cherry-picking with `-x` is important
42
- - [ ]  Replace the `Changelog` and `Contributors` sections of the [changelog](docs/changelogs/vX.Y.md) with the stdout (do **NOT** copy the stderr) of `./bin/mkreleaselog`.
43
- - **NOTE:** `mkreleaselog` expects your `$GOPATH/src/github.com/ipfs/kubo` to include latest commits from `release-vX.Y.Z`
42
- [ ] verify all CI checks on the PR from `release-vX.Y.Z` to `release` are passing
43
+ - [ ]  Replace the `Changelog` and `Contributors` sections of the [changelog](docs/changelogs/vX.Y.md) with the stdout (do **NOT** copy the stderr) of `./bin/mkreleaselog`.
44
+ - **NOTE:** `mkreleaselog` expects your `$GOPATH/src/github.com/ipfs/kubo` to include latest commits from `release-vX.Y.Z`
45
- [ ]  Merge the PR from `release-vX.Y.Z` to `release` using the `Create a merge commit`
46
- do **NOT** use `Squash and merge` nor `Rebase and merge` because we need to be able to sign the merge commit
47
- do **NOT** delete the `release-vX.Y.Z` branch
48
49
### 2. Tag release
50
51
-- [ ] Create the release tag
51
+- [ ] Create the release tag
52
- ⚠️ **NOTE:** This is a dangerous operation! Go and Docker publishing are difficult to reverse! Have the release reviewer verify all the commands marked with !
53
- [ ]  tag the HEAD commit using `git tag -s vX.Y.Z(-rcN) -m 'Prerelease X.Y.Z(-rcN)'`
54
- [ ]  tag the HEAD commit of the `release` branch using `git tag -s vX.Y.Z -m 'Release X.Y.Z'`
@@ -61,31 +61,28 @@ This section covers tasks to be done during each release.
61
- [ ] Publish Docker image to [DockerHub](https://hub.docker.com/r/ipfs/kubo/tags)
62
- [ ] Wait for [Publish docker image](https://github.com/ipfs/kubo/actions/workflows/docker-image.yml) workflow run initiated by the tag push to finish
63
- [ ] verify the image is available on [Docker Hub → tags](https://hub.docker.com/r/ipfs/kubo/tags)
64
-- [ ] Publish the release to [dist.ipfs.tech](https://dist.ipfs.tech)
64
+- [ ] Publish the release to [dist.ipfs.tech](https://dist.ipfs.tech)
65
- [ ] check out [ipfs/distributions](https://github.com/ipfs/distributions)
66
- - [ ] create new branch: run `git checkout -b release-kubo-X.Y.Z(-rcN)`
67
- - [ ] run `./dist.sh add-version kubo vX.Y.Z(-rcN)` to add the new version to the `versions` file ([usage](https://github.com/ipfs/distributions#usage))
66
+ - [ ] create new branch: run `git checkout -b release-kubo-X.Y.Z(-rcN)`
67
- [ ] Verify [ipfs/distributions](https://github.com/ipfs/distributions)'s `.tool-versions`'s `golang` entry is set to the [latest go release](https://go.dev/doc/devel/release) on the major go branch [Kubo is being tested on](https://github.com/ipfs/kubo/blob/master/.github/workflows/gotest.yml) (see `go-version:`). If not, update `.tool-versions` to match the latest golang.
69
- - [ ] create and merge the PR which updates `dists/kubo/versions` and `dists/go-ipfs/versions` (**NOTE:**  will also have `dists/kubo/current` and `dists/go-ipfs/current` – [example](https://github.com/ipfs/distributions/pull/1125))
68
+ - [ ] run `./dist.sh add-version kubo vX.Y.Z(-rcN)` to add the new version to the `versions` file ([usage](https://github.com/ipfs/distributions#usage))
69
+ - [ ] create and merge the PR which updates `dists/kubo/versions` (**NOTE:**  will also have `dists/kubo/current` – [example](https://github.com/ipfs/distributions/pull/1125))
70
- [ ] wait for the [CI](https://github.com/ipfs/distributions/actions/workflows/main.yml) workflow run initiated by the merge to master to finish
71
- [ ] verify the release is available on [dist.ipfs.tech](https://dist.ipfs.tech/#kubo)
72
- [ ] Publish the release to [NPM](https://www.npmjs.com/package/kubo?activeTab=versions)
73
- - [ ] manually dispatch the [Release to npm](https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml) workflow
74
- - [ ] check [Release to npm](https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml) workflow run logs to verify it discovered the new release
73
+ - [ ] manually dispatch the [Release to npm](https://github.com/ipfs/npm-kubo/actions/workflows/main.yml) workflow if it was not executed already and verify it discovered the new release
74
- [ ] verify the release is available on [NPM](https://www.npmjs.com/package/kubo?activeTab=versions)
75
- [ ] Publish the release to [GitHub kubo/releases](https://github.com/ipfs/kubo/releases)
77
- - [ ] create a new release on [github.com/ipfs/kubo/releases](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release)
78
- - [RC example](https://github.com/ipfs/kubo/releases/tag/v0.17.0-rc1)
79
- - [FINAL example](https://github.com/ipfs/kubo/releases/tag/v0.17.0)
76
+ - [ ] [create](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release) a new release
77
+ - [RC example](https://github.com/ipfs/kubo/releases/tag/v0.36.0-rc1)
78
+ - [FINAL example](https://github.com/ipfs/kubo/releases/tag/v0.35.0)
79
- [ ] use the `vX.Y.Z(-rcN)` tag
80
- [ ] link to the release issue
81
- [ ]  link to the changelog in the description
82
- [ ]  check the `This is a pre-release` checkbox
83
- [ ]  copy the changelog (without the header) in the description
84
- [ ]  do **NOT** check the `This is a pre-release` checkbox
86
- - [ ] run the [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow
87
- - [ ] wait for the [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow run to finish
88
- - [ ] verify the release assets are present in the [GitHub release](https://github.com/ipfs/kubo/releases/tag/vX.Y.Z(-rcN))
85
+ - [ ] run the [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow and verify the release assets are attached to the GitHub release
86
87
### 4. After Publishing
88
@@ -95,12 +92,15 @@ This section covers tasks to be done during each release.
92
- [ ] Create and merge a PR from `merge-release-vX.Y.Z` to `master`
93
- ⚠️ do **NOT** use `Squash and merge` nor `Rebase and merge` because we need to be able to sign the merge commit
94
- ⚠️ **NOTE:** make sure to ignore the changes to [version.go](version.go) (keep the `-dev` in `master`)
98
-- [ ] Update Kubo staging environment, see the [Running Kubo tests on staging](https://www.notion.so/Running-Kubo-tests-on-staging-488578bb46154f9bad982e4205621af8) for details.
99
- - [ ]  Test last release against the current RC
100
- - [ ]  Test last release against the current one
101
-- [ ] Promote the release
95
+- [ ] Update [ipshipyard/waterworks-infra](https://github.com/ipshipyard/waterworks-infra)
96
+ - [ ] Update Kubo staging environment, see the [Running Kubo tests on staging](https://www.notion.so/Running-Kubo-tests-on-staging-488578bb46154f9bad982e4205621af8) for details.
97
+ - [ ]  Test last release against the current RC
98
+ - [ ]  Test last release against the current one
99
+ - [ ] Update collab cluster boxes to the tagged release (final or RC)
100
+ - [ ] Update libp2p bootstrappers to the tagged release (final or RC)
101
+- [ ] Promote the release
102
- [ ] create an [IPFS Discourse](https://discuss.ipfs.tech) topic ([prerelease example](https://discuss.ipfs.tech/t/kubo-v0-16-0-rc1-release-candidate-is-out/15248), [release example](https://discuss.ipfs.tech/t/kubo-v0-16-0-release-is-out/15249))
103
- - [ ] use `Kubo vX.Y.Z(-rcN) is out!` as the title and `kubo` and `go-ipfs` as tags
103
+ - [ ] use `Kubo vX.Y.Z(-rcN) is out!` as the title and `kubo` as tags
104
- [ ] repeat the title as a heading (`##`) in the description
105
- [ ] link to the GitHub Release, binaries on IPNS, docker pull command and release notes in the description
106
- [ ] pin the [IPFS Discourse](https://discuss.ipfs.tech) topic globally, you can make the topic a banner if there is no banner already
@@ -112,25 +112,24 @@ This section covers tasks to be done during each release.
112
- [ ]  create an issue comment mentioning early testers on the release issue ([example](https://github.com/ipfs/kubo/issues/9319#issuecomment-1311002478))
113
- [ ]  create an issue comment linking to the release on the release issue ([example](https://github.com/ipfs/kubo/issues/9417#issuecomment-1400740975))
114
- [ ]   promote on bsky.app ([example](https://bsky.app/profile/ipshipyard.com/post/3lh2brzrwbs2c))
115
- - [ ]   promote on x.com ([example](https://x.com/ipshipyard/status/1885346348808929609))
115
+ - [ ]   promote on x.com ([example](https://x.com/ipshipyard/status/1885346348808929609))
116
- [ ]   post the link to the [GitHub Release](https://github.com/ipfs/kubo/releases/tag/vX.Y.Z(-rcN)) to [Reddit](https://reddit.com/r/ipfs) ([example](https://www.reddit.com/r/ipfs/comments/9x0q0k/kubo_v0160_release_is_out/))
117
- [ ] Manually smoke-test the new version with [IPFS Companion Browser Extension](https://docs.ipfs.tech/install/ipfs-companion/)
118
-- [ ]  Update Kubo in [ipfs-desktop](https://github.com/ipfs/ipfs-desktop)
119
- - [ ] check out [ipfs/ipfs-desktop](https://github.com/ipfs/ipfs-desktop)
120
- - [ ] run `npm install `
121
- - [ ] create a PR which updates `package.json` and `package-lock.json`
118
+- [ ] Update Kubo in [ipfs-desktop](https://github.com/ipfs/ipfs-desktop)
119
+ - [ ] create a PR which updates `kubo` version to the tagged version in `package.json` and `package-lock.json`
120
+ - [ ]  switch to final release and merge
121
- [ ]  Update Kubo docs at docs.ipfs.tech:
122
- [ ]  run the [update-on-new-ipfs-tag.yml](https://github.com/ipfs/ipfs-docs/actions/workflows/update-on-new-ipfs-tag.yml) workflow
123
- [ ]  merge the PR created by the [update-on-new-ipfs-tag.yml](https://github.com/ipfs/ipfs-docs/actions/workflows/update-on-new-ipfs-tag.yml) workflow run
124
</details>
126
-- [ ]  Create a blog entry on [blog.ipfs.tech](https://blog.ipfs.tech)
125
+- [ ]  Create a blog entry on [blog.ipfs.tech](https://blog.ipfs.tech)
126
- [ ]  create a PR which adds a release note for the new Kubo version ([example](https://github.com/ipfs/ipfs-blog/pull/529))
127
- [ ]  merge the PR
128
- [ ]  verify the blog entry was published
129
- [ ]   Create a dependency update PR
130
- [ ]   check out [ipfs/kubo](https://github.com/ipfs/kubo)
131
- [ ]   go over direct dependencies from `go.mod` in the root directory (NOTE: do not run `go get -u` as it will upgrade indirect dependencies which may cause problems)
133
- - [ ]   run `make mod_tidy`
132
+ - [ ]   run `make mod_tidy`
133
- [ ]   create a PR which updates `go.mod` and `go.sum`
134
- [ ]   add the PR to the next release milestone
135
- [ ]   Create the next release issue