Description
Meta
- Release owner: @galargh
- Release reviewer: @hacdias
- Expected RC date: week of
2023-02-232023-03-022023-03-06 - 🚢 Expected final release date:
2023-02-302023-03-092023-03-13 - Accompanying PR for improving the release process: Process Improvement: v0.18.0 #9484
- Accompanying Issue for updating the infra: https://github.com/protocol/bifrost-infra/issues/2399
See the Kubo release process for more info.
Kubo 0.19.0 Release
We're happy to announce Kubo 0.19.0!
As usual, this release includes important fixes, some of which may be critical for security. Unless the fix addresses a bug being exploited in the wild, the fix will not be called out in the release notes. Please make sure to update ASAP. See our security fix policy for details.
🗺 What's left for release
<List of items with PRs and/or Issues to be considered for this release>
Required
- Do we need to make any changes to the infrastructure configuration?
- feat(gateway): IPNS record response format (IPIP-351) #9399
- fix: honour --ttl flag in 'ipfs name publish' #9471
- feat: ipfs-webui 2.22.0 #9597
- chore: update dependencies ahead of the v0.19 release #9619
- routing get|put: restore old JSON wire format #9638
- switch delegated HTTP routing to streaming JSON responses
- switch to go-libp2p v0.26 (once released on Thu: go-libp2p v0.26 libp2p/go-libp2p#2062)
Nice to have
- Make accelerated DHT client non-experimental (incl. config migration)
🔦 Highlights
< top highlights for this release notes. For ANY version (final or RCs) >
✅ 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 #bifrost channel in FIL Slack
- ask the previous release owner 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)
- 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:
- Notify the bifrost team about the upcoming release (only if it is not the day of the release yet)
using
kuboreleaser release --version v0.19.0(-RCN) notify-bifrost --date YYYY-MM-DD
or ...- open an issue against bifrost-infra
- Link the bifrost-infra issue in the Meta section
- 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.
- Prepare the release branch and update version numbers accordingly
using
kuboreleaser release --version v0.19.0(-RCN) prepare-branch
or ...- create a new branch
release-v0.19.0
- use
master
as base ifZ == 0
- use
release
as base ifZ > 0
- use
-
update the
CurrentVersionNumber
in version.go in themaster
branch tov0.19+1.0-dev
- update the
CurrentVersionNumber
in version.go in therelease-v0.19
branch tov0.19.0(-RCN)
- create a draft PR from
release-v0.19
torelease
- Cherry-pick commits from
master
to therelease-v0.19.0
usinggit cherry-pick -x <commit>
-
Add full changelog and contributors to the changelog
-
Replace the
Changelog
andContributors
sections of the changelog with the stdout of./bin/mkreleaselog
- do NOT copy the stderr
-
- verify all CI checks on the PR from
release-v0.19
torelease
are passing -
Merge the PR from
release-v0.19
torelease
using theCreate a merge commit
- do NOT use
Squash and merge
norRebase and merge
because we need to be able to sign the merge commit - do NOT delete the
release-v0.19
branch
- do NOT use
- create a new branch
- Create the release tag
using
kuboreleaser release --version v0.19.0(-RCN) tag
or ...- 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 v0.19.0(-RCN) -m 'Prerelease 0.19.0(-RCN)'
-
⚠️ tag the HEAD commit of the
release
branch usinggit tag -s v0.19.0(-RCN) -m 'Release 0.19.0(-RCN)'
-
⚠️ verify the tag is signed and tied to the correct commit usinggit show v0.19.0(-RCN)
-
⚠️ push the tag to GitHub usinggit push origin v0.19.0(-RCN)
- do NOT use
git push --tags
because 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 v0.19.0(-RCN) publish-to-dockerhub
or ...- 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 v0.19.0(-RCN) publish-to-distributions
or ...- check out ipfs/distributions
- run
./dist.sh add-version kubo v0.19.0(-RCN)
to add the new version to theversions
file - create and merge the PR which updates
dists/kubo/versions
anddists/go-ipfs/versions
(and
dists/kubo/current_version
anddists/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 v0.19.0(-RCN) publish-to-npm
or ...- 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 v0.19.0(-RCN) publish-to-github
or ...- create a new release on GitHub
- RC example
- FINAL example
- use the
v0.19.0(-RCN)
tag - link to the release issue
-
link to the changelog in the description
-
check the
This is a pre-release
checkbox -
copy the changelog (without the header) in the description
-
do NOT check the
This is a pre-release
checkbox
- 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
- Notify the bifrost team about the release
using
kuboreleaser release --version v0.19.0(-RCN) notify-bifrost --date YYYY-MM-DD
or ...- create an issue comment on the issue in the bifrost-infra
- Promote the release
using
kuboreleaser release --version v0.19.0(-RCN) promote
or ...- create an IPFS Discourse topic
- prerelease example
- release example
- use
Kubo v0.19.0(-RCN) is out!
as the title - use
kubo
andgo-ipfs
as 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 v0.19.0(-RCN) update-interop
or ...-
check out ipfs/interop
-
run
npm install
-
create a PR which updates
package.json
andpackage-lock.json
-
merge the PR
-
- Update Kubo in ipfs-desktop
using
kuboreleaser release --version v0.19.0(-RCN) update-ipfs-desktop
or ...- check out ipfs/ipfs-desktop
- run
npm install
- create a PR which updates
package.json
andpackage-lock.json
-
merge the PR
-
Update Kubo docs
using
kuboreleaser release --version v0.19.0(-RCN) update-ipfs-docs
or ...-
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
-
Keep checking the metrics until the release issue is closed
- release notes
- post in the #bifrost channel in FIL Slack if there is a problem
-
Merge the release branch back into master, ignoring the changes to version.go (keep the
-dev
) version,using
kuboreleaser release --version v0.19.0(-RCN) merge-branch
or ...- create a new branch
merge-release-v0.19.0
fromrelease
- create and merge a PR from
merge-release-v0.19.0
tomaster
- create a new branch
-
Prepare for the next release
using
kuboreleaser release --version v0.19.0(-RCN) prepare-next
or ...-
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 -u
in root directory -
run
go mod tidy
in root directory -
run
go mod tidy
indocs/examples/kubo-as-a-library
directory -
create a PR which updates
go.mod
andgo.sum
-
add the PR to the next release milestone
-
-
Close the release issue
How to contribute?
Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:
- Check the issues with the
help wanted
label in the ipfs/kubo repo - Join the discussion at discuss.ipfs.tech and help users finding their answers.
- See other options at https://docs.ipfs.tech/community/