@cryptotaxi247 / kubo / commits / b0296bbea

feat: structure release checklist around kuboreleaser commands

galargh committed Jan 26, 2023 at 11:12 UTC b0296bbea61533efa8b9b6900935a1aaa7a2e8e6
1 file changed +107 -154
docs/RELEASE_ISSUE_TEMPLATE.md
+107 -154
@@ -15,6 +15,7 @@
15 * Expected RC date: week of YYYY-MM-DD
16 * 🚢 Expected final release date: YYYY-MM-DD
17 * Accompanying PR for improving the release process: (example: https://github.com/ipfs/kubo/pull/9391)
18 +* Accompanying Issue for updating the infra: (example: https://github.com/protocol/bifrost-infra/issues/2221)
19
20 See the [Kubo release process](https://pl-strflt.notion.site/Kubo-Release-Process-5a5d066264704009a28a79cff93062c4) for more info.
21
@@ -38,195 +39,147 @@ As usual, this release includes important fixes, some of which may be critical f
39
40 ## ✅ Release Checklist
41
41 -Checklist:
42 -
43 -- [ ] **Stage 0 - Prerequisites**
44 - - [ ] Open an issue against [bifrost-infra](https://github.com/protocol/bifrost-infra) ahead of the release ([example](https://github.com/protocol/bifrost-infra/issues/2109)). **Idealy, do this multiple days in advance of the RC** to give Bifrost the heads up that asks will be coming their way.
45 - - [ ] Spell out all that we want updated - gateways, the bootstraper and the cluster/preload nodes
46 - - [ ] Mention @protocol/bifrost-team in the issue and let them know the expected date of the release
47 - - Issue link:
48 - - [ ] Ensure that the `What's left for release` section has all the checkboxes checked. If that's not the case, discuss the open items with Kubo maintainers and update the release schedule accordingly.
49 - - `km kubo:issue:checkOutstandingTasks v0.18.0`
50 - - [ ] Create `docs-release-vX.Y.Z` branch, open a draft PR and keep updating `docs/RELEASE_ISSUE_TEMPLATE.md` on that branch as you go.
51 - - [ ] Link it in the "Meta" section above.
42 +- [ ] Verify you have all the access and tools you need to perform the release
43 - [ ] Ensure you have a [GPG key generated](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key) and [added to your GitHub account](https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account). This will enable you to created signed tags.
44 - [ ] Ensure you have [admin access](https://discuss.ipfs.tech/g/admins) to [IPFS Discourse](https://discuss.ipfs.tech/). Admin access is required to globally pin posts and create banners. @2color might be able to assist you.
45 - [ ] Access to [#bifrost](https://filecoinproject.slack.com/archives/C03MMMF606T) channel in FIL Slack might come in handy. Ask the release reviewer to invite you over.
46 - [ ] Access to [#shared-pl-marketing-requests](https://filecoinproject.slack.com/archives/C018EJ8LWH1) channel in FIL Slack will be required to request social shares. Ask the release reviewer to invite you over.
47 - [ ] After the release is deployed to our internal infrastructure, you're going to need read access to [IPFS network metrics](https://github.com/protocol/pldw/blob/624f47cf4ec14ad2cec6adf601a9f7b203ef770d/docs/sources/ipfs.md#ipfs-network-metrics) dashboards. Open an access request in https://github.com/protocol/pldw/issues/new/choose if you don't have it yet ([example](https://github.com/protocol/pldw/issues/158)).
48 - [ ] You're also going to need NPM installed on your system. See [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) for instructions.
58 - - [ ] Prepare changelog proposal in [docs/changelogs/vX.Y.md](https://github.com/ipfs/kubo/blob/master/docs/changelogs/).
59 - - Skip filling out the `### Changelog` section (the one where which lists all the commits and contributors) for now. We will populate it after the release branch is cut.
60 - - PR link:
61 - - [ ] Ensure the new changelog is linked in the [CHANGELOG.md](CHANGELOG.md) file.
49 - [ ] Install ZSH ([instructions](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH#install-and-set-up-zsh-as-default)). It is needed by the changelog creation script.
50 - [ ] Ensure you have `kubo` checked out under `$(go env GOPATH)/src/github.com/ipfs/kubo`. This is required by the changelog creation script.
51 - If you want your clone to live in a different location, you can symlink it to the expected location by running `mkdir -p $(go env GOPATH)/src/github.com/ipfs && ln -s $(pwd) $(go env GOPATH)/src/github.com/ipfs/kubo`.
65 - - [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date.
66 -- [ ] **Stage 1 - Initial Preparations**
67 - - [ ] Upgrade to the latest patch release of Go that CircleCI has published (currently used version: `1.19.1`)
68 - - [ ] See the list here: https://hub.docker.com/r/cimg/go/tags
69 - - [ ] [ipfs/distributions](https://github.com/ipfs/distributions): bump [this version](https://github.com/ipfs/distributions/blob/master/.tool-versions#L2)
70 - - [ ] [ipfs/kubo](https://github.com/ipfs/kubo): [example PR](https://github.com/ipfs/kubo/pull/8599)
71 - - [ ] [ipfs/ipfs-docs](https://github.com/ipfs/ipfs-docs): [example PR](https://github.com/ipfs/ipfs-docs/pull/1298) - only if the major version changed
52 +- [ ] Upgrade to the latest patch release of Go that CircleCI has published (currently used version: `1.19.1`)
53 + - See the list here: https://hub.docker.com/r/cimg/go/tags
54 + - [ipfs/distributions](https://github.com/ipfs/distributions): bump [this version](https://github.com/ipfs/distributions/blob/master/.tool-versions#L2)
55 + - [ipfs/kubo](https://github.com/ipfs/kubo): [example PR](https://github.com/ipfs/kubo/pull/8599)
56 + - [ipfs/ipfs-docs](https://github.com/ipfs/ipfs-docs): [example PR](https://github.com/ipfs/ipfs-docs/pull/1298) - only if the major version changed
57 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) notify-bifrost --date YYYY-MM-DD`
58 + - [ ] Open an issue against [bifrost-infra](https://github.com/protocol/bifrost-infra) ahead of the release ([example](https://github.com/protocol/bifrost-infra/issues/2221)).
59 + - **Idealy, do this multiple days in advance of the RC** to give Bifrost the heads up that asks will be coming their way.
60 + - Spell out all that we want updated - gateways, the bootstraper and the cluster/preload nodes
61 + - Mention @protocol/bifrost-team in the issue and let them know the expected date of the release
62 + - Link it in the "Meta" section above
63 +- [ ] Ensure that the `What's left for release` section has all the checkboxes checked. If that's not the case, discuss the open items with Kubo maintainers and update the release schedule accordingly.
64 +- [ ] Create `docs-release-vX.Y.Z` branch, open a draft PR and keep updating `docs/RELEASE_ISSUE_TEMPLATE.md` on that branch as you go.
65 + - Link it in the "Meta" section above.
66 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) cut-branch`
67 - [ ] Fork a new branch (`release-vX.Y.Z`) from `master`.
73 - - `km kubo:release:cutReleaseBranch v0.18.0`
68 - [ ] Bump the version in `version.go` in the `master` branch to `vX.(Y+1).0-dev` via a PR ([example](https://github.com/ipfs/kubo/pull/9305)).
75 - - `km kubo:main:updateVersion v0.18.0`
76 -- [ ] **Stage 2 - Release Candidate** - _if any [non-trivial](docs/releases.md#footnotes) changes need to be included in the release, return to this stage_
77 - - [ ] If it's not a first RC, add new commits to the `release-vX.Y.Z` branch from `master` using `git cherry-pick -x ...`
78 - - Note: `release-*` branches are protected. You can do all needed updates on a separated branch (e.g. `wip-release-vX.Y.Z`) and when everything is settled push to `release-vX.Y.Z`
69 - [ ] Bump the version in `version.go` in the `release-vX.Y.Z` branch to `vX.Y.Z-rcN`.
80 - - `km kubo:release:updateReleaseVersion v0.18.0-rc1`
70 - [ ] If it's a first RC, create a draft PR targetting `release` branch if it doesn't exist yet ([example](https://github.com/ipfs/kubo/pull/9306)).
82 - - `km kubo:release:createReleasePR v0.18.0`
71 - [ ] Wait for CI to run and complete PR checks. All checks should pass.
84 - - `km kubo:release:checkCI v0.18.0`
72 +- [ ] If it's not a first RC, add new commits to the `release-vX.Y.Z` branch from `master` using `git cherry-pick -x ...`
73 + - Note: `release-*` branches are protected. You can do all needed updates on a separated branch (e.g. `wip-release-vX.Y.Z`) and when everything is settled push to `release-vX.Y.Z`
74 +- [ ] Update the [docs/changelogs/vX.Y.md](docs/changelogs) with the new commits and contributors.
75 + - [ ] Run `./bin/mkreleaselog` twice to generate the changelog and copy the output.
76 + - The first run of the script might be poluted with `git clone` output.
77 + - [ ] Paste the output into the `### Changelog` section of the changelog file inside the `<details><summary></summary></details>` block.
78 + - [ ] Commit the changelog changes.
79 + - [ ] Push the `release-vX.Y.Z` branch to GitHub (`git push origin release-vX.Y.Z`)
80 +- [ ] Mark the PR created from `release-vX.Y.Z` as ready for review.
81 + - [ ] Ensure the PR is targetting `release` branch.
82 + - [ ] Ensure that CI is green.
83 + - [ ] Have release reviewer review the PR.
84 +- [ ] Merge the PR into `release` branch using the `Create a merge commit` (do **NOT** use `Squash and merge` nor `Rebase and merge` because we need to be able to sign the merge commit).
85 + - Do not delete the `release-vX.Y.Z` branch.
86 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) tag`
87 - [ ] Create a signed tag for the release candidate.
86 - - `km kubo:release:createReleaseTag v0.18.0-rc1`
88 - This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with ⚠️ with the release reviewer.
88 - - [ ] ⚠️ Tag HEAD `release-vX.Y.Z` commit with `vX.Y.Z-rcN` (`git tag -s vX.Y.Z-rcN -m 'Pre-release X.Y.Z-rcn'`)
89 - - [ ] Run `git show vX.Y.Z-rcN` to ensure the tag is correct.
90 - - [ ] ⚠️ Push the `vX.Y.Z-rcN` tag to GitHub (`git push origin vX.Y.Z-rcN`; DO NOT USE `git push --tags` because it pushes all your local tags).
89 + - ⚠️ Tag HEAD `release-vX.Y.Z`/`release` commit with `vX.Y.Z(-RCN)` (`git tag -s vX.Y.Z(-RCN) -m 'Release X.Y.Z(-RCN)'`)
90 + - Run `git show vX.Y.Z(-RCN)` to ensure the tag is correct.
91 + - ⚠️ Push the `vX.Y.Z(-RCN)` tag to GitHub (`git push origin vX.Y.Z(-RCN)`; DO NOT USE `git push --tags` because it pushes all your local tags).
92 +- [ ] Wait for [Publish docker image](https://github.com/ipfs/kubo/actions/workflows/docker-image.yml) workflow run initiated by the tag push to finish.
93 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) publish-to-distributions`
94 - [ ] Add artifacts to https://dist.ipfs.tech by making a PR against [ipfs/distributions](https://github.com/ipfs/distributions)
92 - - `km dist:dist:createDistPR v0.18.0-rc1`
93 - - [ ] Clone the `ipfs/distributions` repo locally.
94 - - [ ] Create a new branch (`kubo-release-vX.Y.Z-rcn`) from `master`.
95 - - [ ] Run `./dist.sh add-version kubo vX.Y.Z-rcN` to add the new version to the `versions` file ([instructions](https://github.com/ipfs/distributions#usage)).
95 + - Clone the `ipfs/distributions` repo locally.
96 + - Create a new branch (`kubo-release-vX.Y.Z-rcn`) from `master`.
97 + - Run `./dist.sh add-version kubo vX.Y.Z-rcN` to add the new version to the `versions` file ([instructions](https://github.com/ipfs/distributions#usage)).
98 - `dist.sh` will print _WARNING: not marking pre-release kubo vX.Y.Z-rcN as the current version._.
97 - - [ ] Push the `kubo-release-vX.Y.Z-rcn` branch to GitHub and create a PR from that branch ([example](https://github.com/ipfs/distributions/pull/760)).
98 - - [ ] Ask for a review from the release reviewer.
99 - - [ ] Enable auto-merge for the PR.
99 + - Push the `kubo-release-vX.Y.Z-rcn` branch to GitHub and create a PR from that branch ([example](https://github.com/ipfs/distributions/pull/760)).
100 + - Ask for a review from the release reviewer.
101 + - Enable auto-merge for the PR.
102 - PR build will build the artifacts and generate a diff in around 30 minutes
103 - PR will be merged automatically once the diff is approved
104 - `master` build will publish the artifacts to https://dist.ipfs.io in around 30 minutes
103 - - [ ] Ensure that the artifacts are available at https://dist.ipfs.io
104 - - `km dist:dist:checkIPFSTech v0.18.0-rc1`
105 + - Ensure that the artifacts are available at https://dist.ipfs.io
106 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) publish-to-npm`
107 - [ ] Publish the RC to [the NPM package](https://www.npmjs.com/package/go-ipfs?activeTab=versions) by running https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml (it happens automatically but it is safe to speed up the process and kick of a run manually)
106 - - `km npm:npm:publishToNPM v0.18.0-rc1`
107 - - `km npm:npm:checkNPM v0.18.0-rc1`
108 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) publish-to-github`
109 - [ ] Cut a pre-release on [GitHub](https://github.com/ipfs/kubo/releases) ([instructions](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release), [example](https://github.com/ipfs/kubo/releases/tag/v0.17.0-rc1))
110 - `km kubo:createGitHubRelease v0.18.0-rc1`
111 - Use `vX.Y.Z-rcN` as the tag.
112 - Link to the release issue in the description.
113 - Link to the relevant [changelog](https://github.com/ipfs/kubo/blob/master/docs/changelogs/) in the description.
114 + - Copy the relevant [changelog](https://github.com/ipfs/kubo/blob/release/docs/changelogs/) into the release description.
115 + - Keep the release notes as trim as possible (e.g. remove top headers where possible, [example](https://github.com/ipfs/kubo/releases/tag/v0.17.0))
116 - Check `This is a pre-release`.
117 - [ ] Synchronize release artifacts by running [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow.
115 - - `km kubo:syncGitHubRelease v0.18.0-rc1`
116 - - [ ] Announce the RC
117 - - [ ] Create a new post on [IPFS Discourse](https://discuss.ipfs.tech). ([example](https://discuss.ipfs.tech/t/kubo-v0-16-0-rc1-release-candidate-is-out/15248))
118 - - Use `Kubo vX.Y.Z-rcn Release Candidate is out!` as the title.
119 - - `km discourse:post:getTitle v0.18.0-rc1`
120 - - Use `kubo` and `go-ipfs` as topics.
121 - - Repeat the title as a heading (`##`) in the description. Link to the GitHub Release, binaries on IPNS, docker pull command and release notes in the description.
122 - - `km discourse:post:getBody v0.18.0-rc1`
123 - - [ ] Pin the topic globally so that it stays at the top of the category.
124 - - [ ] If there is no more important banner currently set on Discourse (e.g. IPFS Camp announcement), make the topic into a banner.
125 - - [ ] Check if Discourse post was automatically copied to:
126 - - [ ] IPFS Discord #ipfs-chatter
127 - - [ ] FIL Slack #ipfs-chatter
128 - - [ ] Matrix https://matrix.to/#/#ipfs-chatter:ipfs.io
129 - - [ ] Mention [early testers](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md) in the comment under the release issue ([example](https://github.com/ipfs/kubo/issues/9319#issuecomment-1311002478)).
130 -- [ ] **Stage 3 - Internal Testing**
131 - - [ ] Infrastructure Testing (see [Kubo Gateway Release Notes](https://www.notion.so/pl-strflt/Kubo-Gateway-Release-Notes-6e0efff28ee540be9ccb8f2b85104c42) by bifrost team if you want to learn more about the process).
132 - - [ ] Update the issue against [bifrost-infra](https://github.com/protocol/bifrost-infra) ([example](https://github.com/protocol/bifrost-infra/issues/2109)).
133 - - `km bifrost:issue:createIssueComment v0.18.0-rc1`
118 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) notify-bifrost --date YYYY-MM-DD`
119 + - [ ] Update the issue against [bifrost-infra](https://github.com/protocol/bifrost-infra) ([example](https://github.com/protocol/bifrost-infra/issues/2109)).
120 - [ ] Mention @protocol/bifrost-team in the issue to let them know the release is ready
121 - [ ] [Optional] Reply under a message about the issue in the #bifrost channel on FIL Slack once the RC is out. Send the message to the channel.
136 - - [ ] Check [metrics](https://protocollabs.grafana.net/d/8zlhkKTZk/gateway-slis-precomputed?orgId=1) every day.
137 - - Compare the metrics trends week over week.
138 - - If there is an unexpected variation in the trend, message the #bifrost channel on FIL Slack and ask for help investigation the cause.
139 - - [ ] IPFS Application Testing.
140 - - [ ] [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
141 - - `km desktop:main:createOrUpdateUpgradePR v0.18.0-rc1`
142 - - `km desktop:main:checkCI v0.18.0-rc1`
143 - - [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
144 - - [ ] Run `npm install` to update `package-lock.json`.
145 - - [ ] Push to a branch ([example](https://github.com/ipfs/ipfs-desktop/pull/1826/commits/b0a23db31ce942b46d95965ee6fe770fb24d6bde))
146 - - [ ] Open a draft PR to track through the final release ([example](https://github.com/ipfs/ipfs-desktop/pull/1826))
147 - - [ ] Ensure CI tests pass
148 - - [ ] [IPFS Companion](https://github.com/ipfs-shipyard/ipfs-companion)
149 - - `km companion:test:initTest v0.18.0-rc2`
150 - - `km companion:test:checkTest v0.18.0-rc2`
151 - - [ ] Start kubo daemon of the version to release.
152 - - [ ] Start a fresh chromium or chrome instance using `chromium --user-data-dir=$(mktemp -d)` (macos `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=$(mktemp -d)`)
153 - - [ ] Start a fresh firefox instance using `firefox --profile $(mktemp -d)` (macos `/Applications/Firefox.app/Contents/MacOS/firefox --profile $(mktemp -d)`)
154 - - [ ] Install IPFS Companion from [vendor-specific store](https://github.com/ipfs/ipfs-companion/#readme).
155 - - [ ] Check that the comunication between Kubo daemon and IPFS companion is working properly checking if the number of connected peers changes.
156 -- [ ] **Stage 5 - Release** - _ONLY FOR FINAL RELEASE_
157 - - [ ] Prepare the `release` branch.
158 - - [ ] Bump the version in `version.go` in the `release-vX.Y.Z` branch to `X.Y.Z`.
159 - - [ ] Update the [docs/changelogs/vX.Y.md](docs/changelogs) with the new commits and contributors.
160 - - [ ] Run `./bin/mkreleaselog` twice to generate the changelog and copy the output.
161 - - The first run of the script might be poluted with `git clone` output.
162 - - [ ] Paste the output into the `### Changelog` section of the changelog file inside the `<details><summary></summary></details>` block.
163 - - [ ] Commit the changelog changes.
164 - - [ ] Push the `release-vX.Y.Z` branch to GitHub (`git push origin release-vX.Y.Z`)
165 - - [ ] Mark the PR created from `release-vX.Y.Z` as ready for review.
166 - - [ ] Ensure the PR is targetting `release` branch.
167 - - [ ] Ensure that CI is green.
168 - - [ ] Have release reviewer review the PR.
169 - - [ ] Merge the PR into `release` branch using the `Create a merge commit` (do **NOT** use `Squash and merge` nor `Rebase and merge` because we need to be able to sign the merge commit).
170 - - Do not delete the `release-vX.Y.Z` branch.
171 - - [ ] Checkout the `release` branch locally.
172 - - Remember to pull the latest changes.
173 - - [ ] Create a signed tag for the release.
174 - - [ ] This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with ⚠️ with the release reviewer.
175 - - [ ] ⚠️ Tag HEAD `release` commit with `vX.Y.Z` (`git tag -s vX.Y.Z -m 'Release X.Y.Z'`)
176 - - [ ] Run `git show vX.Y.Z` to ensure the tag is correct.
177 - - [ ] ⚠️ Push the `vX.Y.Z` tag to GitHub (`git push origin vX.Y.Z`; DO NOT USE `git push --tags` because it pushes all your local tags).
178 - - [ ] Publish the release.
179 - - [ ] Wait for [Publish docker image](https://github.com/ipfs/kubo/actions/workflows/docker-image.yml) workflow run initiated by the tag push to finish.
180 - - [ ] Add artifacts to https://dist.ipfs.tech by making a PR against [ipfs/distributions](https://github.com/ipfs/distributions)
181 - - [ ] Clone the `ipfs/distributions` repo locally.
182 - - [ ] Create a new branch (`kubo-release-vX.Y.Z`) from `master`.
183 - - [ ] Run `./dist.sh add-version kubo vX.Y.Z` to add the new version to the `versions` file ([instructions](https://github.com/ipfs/distributions#usage)).
184 - - [ ] Push the `kubo-release-vX.Y.Z` branch to GitHub and create a PR from that branch ([example](https://github.com/ipfs/distributions/pull/768)).
185 - - [ ] Ask for a review from the release reviewer.
186 - - [ ] Enable auto-merge for the PR.
187 - - PR build will build the artifacts and generate a diff in around 30 minutes
188 - - PR will be merged automatically once the diff is approved
189 - - `master` build will publish the artifacts to https://dist.ipfs.io in around 30 minutes
190 - - [ ] Ensure that the artifacts are available at https://dist.ipfs.io
191 - - [ ] Publish the release to [the NPM package](https://www.npmjs.com/package/go-ipfs?activeTab=versions) by running https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml (it happens automatically but it is safe to speed up the process and kick of a run manually)
192 - - [ ] Cut the release on [GitHub](https://github.com/ipfs/kubo/releases) ([instructions](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release), [example](https://github.com/ipfs/kubo/releases/tag/v0.17.0))
193 - - Use `vX.Y.Z` as the tag.
194 - - Copy the relevant [changelog](https://github.com/ipfs/kubo/blob/release/docs/changelogs/) into the release description.
195 - - Keep the release notes as trim as possible (e.g. remove top headers where possible, [example](https://github.com/ipfs/kubo/releases/tag/v0.17.0))
196 - - [ ] Synchronize release artifacts by running [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow.
197 - - [ ] TODO: https://github.com/protocol/bifrost-infra/issues/2184#issuecomment-1315279257
198 - - [ ] Announce the release
199 - - [ ] Add a link to the release to this release issue as a comment.
200 - - [ ] Create a new post on [IPFS Discourse](https://discuss.ipfs.tech). ([example](https://discuss.ipfs.tech/t/kubo-v0-16-0-release-is-out/15286))
201 - - Use `Kubo vX.Y.Z Release is out!` as the title.
202 - - Use `kubo` and `go-ipfs` as topics.
203 - - Repeat the title as a heading (`##`) in the description.
204 - - Link to the GitHub Release, binaries on IPNS, docker pull command and release notes in the description.
205 - - [ ] Pin the topic globally so that it stays at the top of the category.
206 - - [ ] If there is no more important banner currently set on Discourse (e.g. IPFS Camp announcement), make the topic into a banner.
207 - - [ ] Check if Discourse post was automatically copied to:
208 - - [ ] IPFS Discord #ipfs-chatter
209 - - [ ] FIL Slack #ipfs-chatter
210 - - [ ] Matrix
211 - - [ ] Add a link from release notes to Discuss post (like we did here: https://github.com/ipfs/kubo/releases/tag/v0.17.0)
212 - - [ ] Update the draft PR created for [interop](https://github.com/ipfs/interop) to use the new release and mark it as ready for review.
213 - - [ ] Update the draft PR created for [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop) to use the new release and mark it as ready for review.
214 - - [ ] Update docs
215 - - [ ] Run https://github.com/ipfs/ipfs-docs/actions/workflows/update-on-new-ipfs-tag.yml to generate a PR to the docs repo
216 - - [ ] Merge the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls ([example](https://github.com/ipfs/ipfs-docs/pull/1263))
217 - - [ ] Get the blog post created
218 - - [ ] Submit a request for blog post creation using [the form](https://airtable.com/shrNH8YWole1xc70I).
219 - - Title: Just released: Kubo X.Y.Z!
220 - - Link type: Release notes
221 - - URL: https://github.com/ipfs/kubo/releases/tag/vX.Y.Z
222 - - [ ] The post is live on https://blog.ipfs.io
122 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) promote`
123 + - [ ] Create a new post on [IPFS Discourse](https://discuss.ipfs.tech). ([example](https://discuss.ipfs.tech/t/kubo-v0-16-0-rc1-release-candidate-is-out/15248))
124 + - Use `Kubo vX.Y.Z-rcn Release Candidate is out!` as the title.
125 + - `km discourse:post:getTitle v0.18.0-rc1`
126 + - Use `kubo` and `go-ipfs` as topics.
127 + - Repeat the title as a heading (`##`) in the description. Link to the GitHub Release, binaries on IPNS, docker pull command and release notes in the description.
128 + - Use `Kubo vX.Y.Z Release is out!` as the title.
129 + - Use `kubo` and `go-ipfs` as topics.
130 + - Repeat the title as a heading (`##`) in the description.
131 + - Link to the GitHub Release, binaries on IPNS, docker pull command and release notes in the description.
132 + - [ ] Pin the topic globally so that it stays at the top of the category.
133 + - If there is no more important banner currently set on Discourse (e.g. IPFS Camp announcement), make the topic into a banner.
134 + - [ ] Check if Discourse post was automatically copied to:
135 + - [ ] IPFS Discord #ipfs-chatter
136 + - [ ] FIL Slack #ipfs-chatter
137 + - [ ] Matrix https://matrix.to/#/#ipfs-chatter:ipfs.io
138 + - [ ] Mention [early testers](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md) in the comment under the release issue ([example](https://github.com/ipfs/kubo/issues/9319#issuecomment-1311002478)).
139 + - [ ] Add a link to the release to this release issue as a comment.
140 - [ ] Share the link to the GitHub release
141 - [ ] Twitter (request in Filecoin Slack channel #shared-pl-marketing-requests; [example](https://filecoinproject.slack.com/archives/C018EJ8LWH1/p1664903524843269?thread_ts=1664885305.374909&cid=C018EJ8LWH1))
142 - [ ] [Reddit](https://reddit.com/r/ipfs)
226 -- [ ] **Stage 6 - Post-Release**
143 +- [ ] Add a link from release notes to Discuss post (like we did here: https://github.com/ipfs/kubo/releases/tag/v0.17.0)
144 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) test-ipfs-companion`
145 + - [ ] Start kubo daemon of the version to release.
146 + - [ ] Start a fresh chromium or chrome instance using `chromium --user-data-dir=$(mktemp -d)` (macos `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=$(mktemp -d)`)
147 + - [ ] Start a fresh firefox instance using `firefox --profile $(mktemp -d)` (macos `/Applications/Firefox.app/Contents/MacOS/firefox --profile $(mktemp -d)`)
148 + - [ ] Install IPFS Companion from [vendor-specific store](https://github.com/ipfs/ipfs-companion/#readme).
149 + - [ ] Check that the comunication between Kubo daemon and IPFS companion is working properly checking if the number of connected peers changes.
150 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) update-interop`
151 + - [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
152 + - [ ] Run `npm install` to update `package-lock.json`.
153 + - [ ] Push to a branch
154 + - [ ] Open a PR
155 + - [ ] Ensure CI tests pass
156 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) update-ipfs-desktop`
157 + - [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
158 + - [ ] Run `npm install` to update `package-lock.json`.
159 + - [ ] Push to a branch ([example](https://github.com/ipfs/ipfs-desktop/pull/1826/commits/b0a23db31ce942b46d95965ee6fe770fb24d6bde))
160 + - [ ] Open a draft PR to track through the final release ([example](https://github.com/ipfs/ipfs-desktop/pull/1826))
161 + - [ ] Mark the PR as ready for review
162 + - [ ] Ensure CI tests pass
163 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) update-ipfs-docs`
164 + - [ ] Run https://github.com/ipfs/ipfs-docs/actions/workflows/update-on-new-ipfs-tag.yml to generate a PR to the docs repo
165 + - [ ] Merge the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls ([example](https://github.com/ipfs/ipfs-docs/pull/1263))
166 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) update-ipfs-blog --date YYYY-MM-DD`
167 + - [ ] Submit a request for blog post creation using [the form](https://airtable.com/shrNH8YWole1xc70I).
168 + - Title: Just released: Kubo X.Y.Z!
169 + - Link type: Release notes
170 + - URL: https://github.com/ipfs/kubo/releases/tag/vX.Y.Z
171 + - [ ] The post is live on https://blog.ipfs.io
172 +- [ ] Infrastructure Testing (see [Kubo Gateway Release Notes](https://www.notion.so/pl-strflt/Kubo-Gateway-Release-Notes-6e0efff28ee540be9ccb8f2b85104c42) by bifrost team if you want to learn more about the process).
173 + - Check [metrics](https://protocollabs.grafana.net/d/8zlhkKTZk/gateway-slis-precomputed?orgId=1) every day.
174 + - Compare the metrics trends week over week.
175 + - If there is an unexpected variation in the trend, message the #bifrost channel on FIL Slack and ask for help investigation the cause.
176 +- [ ] `kuboreleaser release --version vX.Y.Z(-RCN) merge-branch`
177 - [ ] Merge the `release` branch back into `master`, ignoring the changes to `version.go` (keep the `-dev` version from master).
228 - - [ ] Create an issue using this release issue template for the _next_ release.
229 - - [ ] Close this release issue.
178 +- [ ] Prepare changelog proposal in [docs/changelogs/vX.Y.md](https://github.com/ipfs/kubo/blob/master/docs/changelogs/).
179 + - Skip filling out the `### Changelog` section (the one where which lists all the commits and contributors) for now. We will populate it after the release branch is cut.
180 + - Ensure the new changelog is linked in the [CHANGELOG.md](CHANGELOG.md) file.
181 +- [ ] Create an issue using this release issue template for the _next_ release.
182 +- [ ] Close this release issue.
183
184 ## How to contribute?
185