-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Description
Meta
- Release owner: @hacdias
- Release engineer: @hacdias
- Release reviewer: @Jorropo
- Expected RC date:
2023-06-012023-06-082023-06-12 - 🚢 Expected final release date:
2023-06-082023-06-152023-07-04 - Changelog: https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.21.md
- Accompanying PR for improving the release process: (example: docs: release process updates from v0.17.0 #9391)
- Accompanying Issue for updating the infra: (example: https://github.com/protocol/bifrost-infra/issues/2221)
Items in scope
Required for RC1
- Accelerated DHT improvements: Move AcceleratedDHTClient from being experimental #9703 - This is an operational improvement item that has been open for multiple months and needs to be closed out for operational hygeine.
- Routing table resilience items: fix: don't add unresponsive DHT servers to the Routing Table libp2p/go-libp2p-kad-dht#820 - This is an operational improvement item that has been open for multiple months and needs to be closed out for operational hygeine.
- Async pinner changes: pin: follow async pinner changes #9859 - Community contribution that has been open for a month plus that publicly said would include.
- go-libp2p update to 0.28 if it's ready (see comment), and if not use 0.27.5
- Boxo release with latest changes Release 0.9.0 boxo#325 - Much of this Kubo release depends on improvements there. In addition, we need to address v0.20.0-rc2: cannot build plugins #9839 since that slipped the last release.
- If secp256k1 key support is missing pem-pkcs8-cleartext import/export #9912 isn't fixed by the time of final release, then revert 67e1a17 and cc original author.
- fix: correct list of addresses for delegated routing #9920 (fix for HTTP PUT provided by IPNI team)
-
moved to 0.22dag importerror handling fixes fix(cmd): useful errors in dag import #9945 -
moved to 0.22dag importnot pinning by default + regression tests feat!: dag import - don't pin roots by default #9926
Required for RC2
- feat!: dag import - don't pin roots by default #9926
- fix(cmd): useful errors in dag import #9945
- fix: fix abba bug in UsefullNewPeer libp2p/go-libp2p-kbucket#122
- fix: issues discovered in kubo v0.21.0-rc1 libp2p/go-libp2p-kad-dht#851
- feat: [email protected] #9940
- go-libp2p update to 0.27.6
Required for RC3
- fix(gateway): allow CAR trustless requests with path boxo#358
- go-libp2p update to 0.27.7 chore: bump go-libp2p-kad-dht for deadlock fix #9980
Others
These are items that we had stated at the beginning of the release that we said we wanted to include. We aren't blocking the relse on these. There are also items in 0.21 iteration.
- HTTP Routing v1 streaming support: routing/http: feat: add streaming support boxo#18
- Prepare to deprecate pubsub APIs: Deprecate then Remove /api/v0/pubsub/* RPC API and
ipfs pubsubCommands #9717 - Polishing process items of Boxo
- Landing changes for caching proxy for HTTP Routing v1
✅ Release Checklist
Labels
If an item should be executed for a specific release type, it should be labeled with one of the following labels:
Otherwise, it means it should be executed for ALL release types.
Patch releases should follow the same process as .0 releases. If some item should NOT be executed for a Patch Release, it should be labeled with:
Before the release
This section covers tasks to be done ahead of the release.
- Verify you have access to all the services and tools required for the release
- GPG signature configured in local git and in GitHub
- admin access to IPFS Discourse
- ask the previous release owner (or @2color) for an invite
-
access to #shared-pl-marketing-requests channel in FIL Slack
- ask the previous release owner for an invite
- access to IPFS network metrics dashboards in Grafana
- kuboreleaser checked out on your system (only if you're using kuboreleaser)
- Thunderdome checked out on your system and configured (see the Thunderdome release docs for setup)
- docker installed on your system (only if you're using kuboreleaser)
- npm installed on your system (only if you're NOT using kuboreleaser)
- zsh installed on your system
- kubo checked out under
$(go env GOPATH)/src/github.com/ipfs/kubo- you can also symlink your clone 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
- you can also symlink your clone to the expected location by running
-
Reddit account
Upgrade Go used in CI to the latest patch release available in CircleCI in:
- Verify there is nothing left for release
- Create a release process improvement PR
- update the release issue template as you go
- link it in the Meta section
The release
This section covers tasks to be done during each release (current: 0.21.0)
- Prepare the release branch and update version numbers accordingly
using
kuboreleaser release --version vX.Y.Z(-rcN) prepare-branchor ...- create a new branch
release-vX.Y.Z- use
masteras base ifZ == 0 - use
releaseas base ifZ > 0
- use
-
update the
CurrentVersionNumberin version.go in themasterbranch tovX.Y+1.0-dev - update the
CurrentVersionNumberin version.go in therelease-vX.Ybranch tovX.Y.Z(-RCN) - create a draft PR from
release-vX.Ytorelease - Cherry-pick commits from
masterto therelease-vX.Y.Zusinggit cherry-pick -x <commit> -
Add full changelog and contributors to the changelog
-
Replace the
ChangelogandContributorssections of the changelog with the stdout of./bin/mkreleaselog- do NOT copy the stderr
-
- verify all CI checks on the PR from
release-vX.Ytoreleaseare passing -
Merge the PR from
release-vX.Ytoreleaseusing theCreate a merge commit- do NOT use
Squash and mergenorRebase and mergebecause we need to be able to sign the merge commit - do NOT delete the
release-vX.Ybranch
- do NOT use
- create a new branch
- @Jorropo Run Thunderdome testing, see the Thunderdome release docs for details
- create a PR and merge the experiment config into Thunderdome
- Create the release tag
using
kuboreleaser release --version vX.Y.Z(-rcN) tagor ...- This is a dangerous operation! Go and Docker publishing are difficult to reverse! Have the release reviewer verify all the commands marked with
⚠️ ! -
⚠️ tag the HEAD commit using
git tag -s vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)' -
⚠️ tag the HEAD commit of the
releasebranch usinggit tag -s vX.Y.Z(-RCN) -m 'Release X.Y.Z(-RCN)' -
⚠️ verify the tag is signed and tied to the correct commit usinggit show vX.Y.Z(-RCN) -
⚠️ push the tag to GitHub usinggit push origin vX.Y.Z(-RCN)- do NOT use
git push --tagsbecause it pushes all your local tags
- do NOT use
- This is a dangerous operation! Go and Docker publishing are difficult to reverse! Have the release reviewer verify all the commands marked with
- Publish the release to DockerHub
using
kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-dockerhubor ...- Wait for Publish docker image workflow run initiated by the tag push to finish
- verify the image is available on Docker Hub
- Publish the release to ipfs.tech
using
kuboreleaser release --version vX.Y.Z(-rcN) publish-to-distributionsor ...- check out ipfs/distributions
- run
./dist.sh add-version kubo vX.Y.Z(-RCN)to add the new version to theversionsfile - create and merge the PR which updates
dists/kubo/versionsanddists/go-ipfs/versions(and
dists/kubo/current_versionanddists/go-ipfs/current_version) - wait for the CI workflow run initiated by the merge to master to finish
- verify the release is available on dist.ipfs.io
- Publish the release to NPM
using
kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npmor ...- run the Release to npm workflow
- check Release to npm workflow run logs to verify it discovered the new release
- verify the release is available on NPM
- Publish the release to GitHub
using
kuboreleaser release --version vX.Y.Z(-rcN) publish-to-githubor ...- create a new release on GitHub
- RC example
- FINAL example
- use the
vX.Y.Z(-RCN)tag - link to the release issue
-
link to the changelog in the description
-
check the
This is a pre-releasecheckbox -
copy the changelog (without the header) in the description
-
do NOT check the
This is a pre-releasecheckbox
- run the sync-release-assets workflow
- wait for the sync-release-assets workflow run to finish
- verify the release assets are present in the GitHub release
- create a new release on GitHub
- Promote the release
using
kuboreleaser release --version vX.Y.Z(-rcN) promoteor ...- create an IPFS Discourse topic
- prerelease example
- release example
- use
Kubo vX.Y.Z(-RCN) is out!as the title - use
kuboandgo-ipfsas topics - 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
- pin the IPFS Discourse topic globally
- you can make the topic a banner if there is no banner already
- verify the IPFS Discourse topic was copied to:
- #ipfs-chatter in IPFS Discord
- #ipfs-chatter in FIL Slack
- #ipfs-chatter:ipfs.io in Matrix
-
Add the link to the IPFS Discourse topic to the GitHub Release description
-
create an issue comment mentioning early testers on the release issue
-
create an issue comment linking to the release on the release issue
-
ask the marketing team to tweet about the release in #shared-pl-marketing-requests in FIL Slack
-
post the link to the GitHub Release to Reddit
- create an IPFS Discourse topic
- Test the new version with
ipfs-companion -
Update Kubo in interop
using
kuboreleaser release --version vX.Y.Z(-rcN) update-interopor ...-
check out ipfs/interop
-
run
npm install -
create a PR which updates
package.jsonandpackage-lock.json -
merge the PR
-
-
Update Kubo in ipfs-desktop
using
kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-desktopor ...- check out ipfs/ipfs-desktop
- run
npm install - create a PR which updates
package.jsonandpackage-lock.json -
add @SgtPooki and @whizzzkid as reviewers
-
Update Kubo docs
using
kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-docsor ...-
run the update-on-new-ipfs-tag.yml workflow
-
merge the PR created by the update-on-new-ipfs-tag.yml workflow run
-
-
Create a blog entry on ipfs.tech
-
Merge the release branch back into master, ignoring the changes to version.go (keep the
-dev) version,using
kuboreleaser release --version vX.Y.Z(-rcN) merge-branchor ...- create a new branch
merge-release-vX.Y.Zfromrelease - create and merge a PR from
merge-release-vX.Y.Ztomaster
- create a new branch
-
Prepare for the next release
using
kuboreleaser release --version vX.Y.Z(-rcN) prepare-nextor ...-
Create the next changelog
-
Link to the new changelog in the CHANGELOG.md file
-
Create the next release issue
-
-
Create a dependency update PR
-
check out ipfs/kubo
-
run
go get -uin root directory -
run
go mod tidyin root directory -
run
go mod tidyindocs/examples/kubo-as-a-librarydirectory -
create a PR which updates
go.modandgo.sum -
add the PR to the next release milestone
-
-
Close the release issue