docs: guess what's going to be required for the final release
galargh committed
Sep 27, 2022 at 18:17 UTC
6c6708af329843c8a05f8925a5e9b324e18d63bf
1 file changed
+45
-42
docs/RELEASE_ISSUE_TEMPLATE.md
+45
-42
@@ -49,6 +49,7 @@ Checklist:
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`.
52
+ - [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date.
53
- [ ] **Stage 1 - Initial Preparations**
54
- [ ] Upgrade to the latest patch release of Go that CircleCI has published (currently used version: `1.19.1`)
55
- [ ] See the list here: https://hub.docker.com/r/cimg/go/tags
@@ -65,10 +66,10 @@ Checklist:
66
- The first run of the script might be poluted with `git clone` output.
67
- [ ] Paste the output into the `### Changelog` section of the changelog file inside the `<details><summary></summary></details>` block.
68
- [ ] Commit the changelog changes.
68
- - [ ] Push the `release-vX.Y.Z` branch to GitHub (`git push origin release-vX.Y.Z`) and create a draft PR from that branch if it doesn't exist yet ([example](https://github.com/ipfs/kubo/pull/9306)).
69
+ - [ ] Push the `release-vX.Y.Z` branch to GitHub (`git push origin release-vX.Y.Z`) and create a draft PR targetting `release` branch if it doesn't exist yet ([example](https://github.com/ipfs/kubo/pull/9306)).
70
- [ ] Wait for CI to run and complete PR checks. All checks should pass.
70
- - [ ] Tag HEAD `release-vX.Y.Z` commit with `vX.Y.Z-rcN` (`git tag -s vX.Y.Z-rcN`, use "Pre-release 0.15.0-rc1" as the tag message)
71
- - [ ] 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).
71
+ - [ ] 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'`)
72
+ - [ ] 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).- - _START: steps that are also relevant for the final release_
73
- [ ] Add artifacts to https://dist.ipfs.tech by making a PR against [ipfs/distributions](https://github.com/ipfs/distributions)
74
- [ ] Clone the `ipfs/distributions` repo locally.
75
- [ ] Create a new branch (`kubo-release-vX.Y.Z-rcn`) from `master`.
@@ -79,10 +80,12 @@ Checklist:
80
- [ ] Inspect results, merge if CI is green and the diff looks ok
81
- [ ] Wait for `master` branch to build. It will automatically update DNSLink at https://dist.ipfs.tech (~30min)
82
- [ ] 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)
83
+ - _insert additional steps that are relevant only for the final release here_
84
- [ ] 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.16.0-rc1))
85
- Use `vX.Y.Z-rcN` as the tag.
86
- Link to the release issue in the description.
87
- Link to the relevant [changelog](https://github.com/ipfs/kubo/blob/master/docs/changelogs/) in the description.
88
+ - For the final release, keep the release notes as trim as possible (removing some of the top headers, like we did here: https://github.com/ipfs/kubo/releases/tag/v0.15.0)
89
- Check `This is a pre-release`.
90
- [ ] Synchronize release artifacts by running [sync-release-assets](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) workflow.
91
- [ ] Announce the RC
@@ -98,6 +101,7 @@ Checklist:
101
- [ ] FIL Slack #ipfs-chatter
102
- [ ] Matrix
103
- [ ] 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/9237#issuecomment-1258072509)).
104
+ - _STOP: steps that are also relevant for the final release_
105
- [ ] **Stage 3 - Internal Testing**
106
- [ ] Library Testing.
107
- [ ] [interop](https://github.com/ipfs/interop)
@@ -127,7 +131,10 @@ Checklist:
131
- If there is an unexpected variation in the trend, message the #bifrost channel on FIL Slack and ask for help investigation the cause.
132
- [ ] IPFS Application Testing.
133
- [ ] [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
130
- - [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop) and push to a branch ([example](https://github.com/ipfs/ipfs-desktop/pull/1826/commits/b0a23db31ce942b46d95965ee6fe770fb24d6bde)), and open a draft PR to track through the final release ([example](https://github.com/ipfs/ipfs-desktop/pull/1826)), you have to check out the repo to update package-lock.json
134
+ - [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
135
+ - [ ] Run `npm install` to update `package-lock.json`.
136
+ - [ ] Push to a branch ([example](https://github.com/ipfs/ipfs-desktop/pull/1826/commits/b0a23db31ce942b46d95965ee6fe770fb24d6bde))
137
+ - [ ] Open a draft PR to track through the final release ([example](https://github.com/ipfs/ipfs-desktop/pull/1826))
138
- [ ] Ensure CI tests pass
139
- [ ] [IPFS Companion](https://github.com/ipfs-shipyard/ipfs-companion)
140
- Start kubo daemon of the version to release.
@@ -135,45 +142,41 @@ Checklist:
142
- Start a fresh firefox instance using `firefox --profile $(mktemp -d)` (macos `/Applications/Firefox.app/Contents/MacOS/firefox --profile $(mktemp -d)`)
143
- Install IPFS Companion from [vendor-specific store](https://github.com/ipfs/ipfs-companion/#readme).
144
- Check that the comunication between Kubo daemon and IPFS companion is working properly checking if the number of connected peers changes.
138
-- [ ] **Stage 4 - Community Prod Testing** - _ONLY FOR FINAL RELEASE_
139
- - [ ] Add a link from release notes to Discuss post (like we did here: https://github.com/ipfs/kubo/releases/tag/v0.15.0 )
140
- - [ ] Keep the release notes as trim as possible (removing some of the top headers, like we did here: https://github.com/ipfs/kubo/releases/tag/v0.15.0 )
141
- - [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date
142
- - [ ] Update docs by merging the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls (they are auto-created every 12 hours) (only for final releases, not RCs)
145
- [ ] **Stage 5 - Release** - _ONLY FOR FINAL RELEASE_
144
- - [ ] Final preparation
145
- - [ ] Verify that version string in [`version.go`](https://github.com/ipfs/go-ipfs/tree/master/version.go) has been updated.
146
- - [ ] Open a PR merging `release-vX.Y.Z` into the `release` branch.
147
- - This should be reviewed by the person who most recently released a version of `go-ipfs`.
148
- - Use a merge commit (no rebase, no squash)
149
- - [ ] Prepare the command to use for tagging the merge commit (on the `release` branch) with `vX.Y.Z`.
150
- - Use `git tag -s` to ensure the tag is signed
151
- - [ ] Have the tagging command reviewed by the person who most recently released a version of `go-ipfs`
152
- - This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing
153
- - [ ] Push the tag
154
- - Use `git push origin <tag>`
155
- - DO NOT USE `git push --tags`, as it will push ALL of your local tags
156
- - This should initiate a Docker build in GitHub Actions that publishes a `vX.Y.Z` tagged Docker image to DockerHub
157
- - [ ] Release published
158
- - [ ] to [dist.ipfs.tech](https://dist.ipfs.tech)
159
- - [ ] to [npm-go-ipfs](https://www.npmjs.com/package/go-ipfs) (done by CI at [ipfs/npm-go-ipfs](https://github.com/ipfs/npm-go-ipfs), but ok to dispatch [this job](https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml) manually)
160
- - [ ] to [chocolatey](https://chocolatey.org/packages/go-ipfs) (done by CI at [ipfs/choco-go-ipfs](https://github.com/ipfs/choco-go-ipfs/), but ok to dispatch [this job](https://github.com/ipfs/choco-go-ipfs/actions/workflows/main.yml) manually)
161
- - [ ] Manually run [the release workflow](https://github.com/ipfs/choco-go-ipfs/actions/workflows/main.yml)
162
- - [ ] Wait for Chocolatey to approve the release (usually takes a few hours)
163
- - [ ] to [snap](https://snapcraft.io/ipfs) (done CI at [snap/snapcraft.yaml](https://github.com/ipfs/kubo/blob/master/snap/snapcraft.yaml))
164
- - [ ] to [github](https://github.com/ipfs/go-ipfs/releases)
165
- - [ ] After publishing the GitHub release, run the workflow to attach the release assets: https://github.com/ipfs/go-ipfs/actions/workflows/sync-release-assets.yml
166
- - [ ] to [arch](https://www.archlinux.org/packages/community/x86_64/go-ipfs/) (flag it out of date)
167
- - [ ] Cut a new ipfs-desktop release
168
- - [ ] Get a blog post created
169
- - [Submit a request using this form](https://airtable.com/shrNH8YWole1xc70I).
170
- - Notify marketing in #shared-pl-marketing-requests about the blog entry request (since the form gets spam).
171
- - Don't mark this as done until the blog entry is live.
172
- - [ ] Broadcasting (link to blog post)
173
- - [ ] Twitter (request in Filecoin Slack channel #shared-pl-marketing-requests)
174
- - [ ] [Reddit](https://reddit.com/r/ipfs)
175
- - [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
176
- - A bot auto-posts this to Discord and Matrix
146
+ - [ ] Prepare the `release` branch.
147
+ - [ ] Bump the version in `version.go` in the `release-vX.Y.Z` branch to `vX.Y.0`.
148
+ - [ ] Push the `release-vX.Y.Z` branch to GitHub (`git push origin release-vX.Y.Z`)
149
+ - [ ] Mark the PR created from `release-vX.Y.Z` as ready for review.
150
+ - [ ] Ensure the PR is targetting `release` branch.
151
+ - [ ] Ensure that CI is green.
152
+ - [ ] Have release reviewer review the PR.
153
+ - [ ] 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).
154
+ - [ ] Checkout the `release` branch locally.
155
+ - Remember to pull the latest changes.
156
+ - [ ] Create a signed tag for the release.
157
+ - [ ] Have release reviewer review the subsequent tagging commits you intend to run.
158
+ - This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing
159
+ - [ ] Tag HEAD `release` commit with `vX.Y.0` (`git tag -s vX.Y.0 -m 'Release X.Y.0'`)
160
+ - [ ] Push the `vX.Y.0` tag to GitHub (`git push origin vX.Y.0`; DO NOT USE `git push --tags` because it pushes all your local tags).
161
+ - [ ] Wait for [Publish docker image](https://github.com/ipfs/kubo/actions/workflows/docker-image.yml) workflow run initiated by the tag push to finish.
162
+ - [ ] Repeat _RC steps that are also relevant for the final release_ with these additional steps:
163
+ - [ ] Publish the release to [chocolatey](https://chocolatey.org/packages/go-ipfs) by running https://github.com/ipfs/choco-go-ipfs/actions/workflows/main.yml (it happens automatically but it is safe to speed up the process and kick of a run manually)
164
+ - [ ] Wait for Chocolatey to approve the release (usually takes a few hours)
165
+ - [ ] Ensure the release is published to [snap](https://snapcraft.io/ipfs)
166
+ - [ ] Ensure the release is published to [arch](https://www.archlinux.org/packages/community/x86_64/go-ipfs/) (flag it out of date)
167
+ - [ ] Add a link from release notes to Discuss post (like we did here: https://github.com/ipfs/kubo/releases/tag/v0.15.0)
168
+ - [ ] Update the draft PR created for [interop](https://github.com/ipfs/interop) to use the new release and mark it as ready for review.
169
+ - [ ] 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.
170
+ - [ ] Update docs by merging the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls ([example](https://github.com/ipfs/ipfs-docs/pull/1263)) (they are created automatically every 12 hours)
171
+ - [ ] Get the blog post created and shared
172
+ - [ ] Submit a request for blog post creation using [the form](https://airtable.com/shrNH8YWole1xc70I).
173
+ - Notify marketing in #shared-pl-marketing-requests about the blog entry request (since the form tends to go to spam).
174
+ - Don't mark this as done until the blog entry is live.
175
+ - [ ] Share the blog post
176
+ - [ ] Twitter (request in Filecoin Slack channel #shared-pl-marketing-requests)
177
+ - [ ] [Reddit](https://reddit.com/r/ipfs)
178
+ - [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
179
+ - A bot auto-posts this to Discord and Matrix
180
- [ ] **Stage 6 - Post-Release**
181
- [ ] Merge the `release` branch back into `master`, ignoring the changes to `version.go` (keep the `-dev` version from master).
182
- [ ] Create an issue using this release issue template for the _next_ release.