Release 0.30
Meta
- Release owner: @lidel
- Release reviewer: @gammazero
- RC1 date: Aug 21st
- RC2 date: Aug 28th
- 🚢 Expected final release date: Sep 4th
- Release PR: https://github.com/ipfs/kubo/pull/10490
- Thunderdome PR:
- Accompanying PR for improving the release process: https://github.com/ipfs/kubo/pull/10496
- Changelog: https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.30.md
Items In Scope
Required
- [x] https://github.com/ipfs/kubo/pull/10463
- [x] https://github.com/ipfs/kubo/pull/10468
- [x] https://github.com/ipfs/kubo/pull/10430
- [x] https://github.com/ipfs/boxo/pull/618
- [x] https://github.com/ipfs/kubo/pull/10444
- [x] https://github.com/ipfs/kubo/issues/10416 with https://github.com/libp2p/go-libp2p/pull/2861
- [x] https://github.com/ipfs/boxo/issues/527
- [ ] test docker on raspberrypi, investigate docker arm warning (log)
- [x] https://github.com/ipfs/kubo/pull/10462
- [x] https://github.com/ipfs/kubo/pull/10227
- [x] https://github.com/ipfs/boxo/pull/651
- [x] https://github.com/ipfs/kubo/issues/10461
- [x] https://github.com/ipfs/kubo/pull/10473
- [x] https://github.com/ipfs/kubo/pull/10477
- [x] https://github.com/ipfs/kubo/pull/10483
- [x] https://github.com/ipfs/kubo/pull/10485
- [x] go-libp2p-kad-dht regression;
CanConnectfix https://github.com/libp2p/go-libp2p-kad-dht/pull/976- [x] https://github.com/ipfs/kubo/pull/10488 & https://github.com/libp2p/go-libp2p-kad-dht/pull/980
- [x] https://github.com/ipfs/kubo/pull/10494
- [x] https://github.com/ipfs/boxo/pull/659
- [x] https://github.com/ipfs/kubo/pull/10480
- [x] https://github.com/ipfs/kubo/pull/10478
- [x] https://github.com/ipfs/boxo/pull/649
- [x] https://github.com/ipfs/kubo/pull/10472
- [x] https://github.com/ipfs/boxo/pull/643
- [x] https://github.com/ipfs/kubo/pull/10466
- [x] https://github.com/ipfs/kubo/pull/10438
- [x] https://github.com/ipfs/kubo/pull/10441
- [x] https://github.com/ipfs/kubo/pull/10486
- [x] https://github.com/ipfs/kubo/pull/10497
Nice To Have (Optional)
We've found a potential regression in go-libp2p-kad-dht and RC1 will be slightly delayed until we have a fix. In the meantime, working on Support for UnixFS 1.5 Mode and ModTime and hoping to include it in RC1 as well.
go-libp2p-kad-dht regression should be fixed by dependency update made in https://github.com/ipfs/kubo/pull/10488.
Release dance for 0.30.0-rc1 is unblocked.
✅ Release Checklist (v0.30.0-rc1)
- [x] Prepare the release branch and update version numbers accordingly
using
./kuboreleaser --skip-check-before 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
- [x] 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 -m 'Release X.Y.Z' - [ ] ⚠️ verify the tag is signed and tied to the correct commit using
git show vX.Y.Z(-RCN) - [ ] ⚠️ push the tag to GitHub using
git push origin vX.Y.Z(-RCN)- do NOT use
git push --tagsbecause it pushes all your local tags
- do NOT use
- [x] 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
- [x] Verify ipfs/distributions's
.tool-versions'sgolangentry is set to the latest go release on the major go branch Kubo is being tested on (seego-version:). - [x] Publish the release to dist.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.tech
- [x] Publish the release to NPM
using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npm(⚠️ you might need to run the command a couple of times because GHA might not be able to see the new distribution straight away due to caching) 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
- [x] 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
- [ ] Run Thunderdome testing, see the Thunderdome release docs for details
- [ ] create a PR and merge the experiment config into Thunderdome
- [x] 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~~ (currently skipped) - [ ]
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 as reviewer
- [ ]
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 blog.ipfs.tech
using
./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-blog --date YYYY-MM-DDor ...- [ ]
create a PR which adds a release note for the new Kubo version
- [ ]
merge the PR
- [ ]
verify the blog entry was published
- [ ]
- [ ]
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
make mod_tidy - [ ]
create a PR which updates
go.modandgo.sum - [ ]
add the PR to the next release milestone
- [ ]
- [ ]
Close the release issue
RC1 is ready for testing:
- docs/changelogs/v0.30.md
- https://github.com/ipfs/kubo/releases/tag/v0.30.0-rc1
- https://dist.ipfs.tech/kubo/v0.30.0-rc1/
Early testers ping for v0.30.0-rc1 testing 😄.
- [ ] Charity Engine (@rytiss, @tristanolive)
- [ ] Fission (@bmann)
- [ ] Infura (@MichaelMure)
- [ ] OrbitDB (@aphelionz)
- [ ] pacman.store (@RubenKelevra)
- [ ] Pinata (@obo20)
- [ ] PL EngRes bifrost (@gmasgras)
- [ ] RTrade (@postables)
- [ ] Siderus (@koalalorenzo)
- [ ] Textile (@sanderpick)
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
@lidel I'm working with @sukunrt now on a fix for https://github.com/libp2p/go-libp2p/issues/2913. There's a good chance we'll have a release by EOD once Marco can take a look. Can we hold off the final release?
@2color yes, I already planned to have -rc2 next week if we land some fixes, so no problem to wait.
Update: after analysis, the go-libp2p fix from https://github.com/libp2p/go-libp2p/pull/2936 is not a blocker, because majority of users uses static ports, and the problem only occurs in test environments when 0 is used and different UDP port is used for QUIC and Webtransport. We will cut RC2 without waiting for new libp2p.
✅ Release Checklist (v0.30.0-rc2)
The release
This section covers tasks to be done during each release.
- [x] Prepare the release branch and update version numbers accordingly
using
./kuboreleaser --skip-check-before 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
- [x]
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 - [x] 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
- [ ]
- [x] 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
- [x] 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 -m 'Release X.Y.Z' - [ ] ⚠️ verify the tag is signed and tied to the correct commit using
git show vX.Y.Z(-RCN) - [ ] ⚠️ push the tag to GitHub using
git push origin vX.Y.Z(-RCN)- do NOT use
git push --tagsbecause it pushes all your local tags
- do NOT use
- [x] Publish to Dockerhub, NPM, and dist.ipfs.tech and GitHub using
./kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-allor follow each step below:- [x] 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
- [x] Verify ipfs/distributions's
.tool-versions'sgolangentry is set to the latest go release on the major go branch Kubo is being tested on (seego-version:). - [x] Publish the release to dist.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.tech
- [x] Publish the release to NPM
using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npm(⚠️ you might need to run the command a couple of times because GHA might not be able to see the new distribution straight away due to caching) 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
- [x] 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
- [x] Publish the release to DockerHub
- [ ] Run Thunderdome testing, see the Thunderdome release docs for details
- [ ] create a PR and merge the experiment config into Thunderdome
- [x] Promote the release
using
./kuboreleaser release --version vX.Y.Z(-rcN) promoteor ...- [x] 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
- [x] create an IPFS Discourse topic
Early testers ping for v0.30.0-rc2 testing ✨
- [ ] Charity Engine (@rytiss, @tristanolive)
- [ ] Fission (@bmann)
- [ ] Infura (@MichaelMure)
- [ ] OrbitDB (@haydenyoung)
- [ ] Pinata (@obo20)
- [ ] Shipyard (@cewood, @ns4plabs)
- [ ] Siderus (@koalalorenzo)
- [ ] Textile (@sanderpick)
- [ ] @RubenKelevra
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
FYSA found a regression caused by go1.23 update: https://github.com/ipfs/kubo/issues/10501
Workaround is to run with GODEBUG=asynctimerchan=1.
We will likely switch to go1.22 before final release.
Given that go-libp2p hasn't been updated to account for https://github.com/libp2p/specs/pull/628, WebRTC-direct won't work out of the box.
Browser users (js-libp2p, Helia and verified-fetch) would have to override the default maxMessageSize when initialising the transport in js-libp2p WebRTC-direct, for browser <---webrtc-direct > to work.
Ack, I see it is still being discussed, so tentatively planing to cut 0.30.0-rc3 ~Thu? if/once we agree the maxMessageSize has to change.
The WebRTC maxMessageSize change has been reverted in js-libp2p, so it's no longer a blocker.
In the meantime we had boxo and go-libp2p releases with various fixes, and we had to switch back to go1.22 (https://github.com/ipfs/kubo/pull/10502), so making 0.30.0-rc3 still feels prudent.
Plan is to have final 0.30 next week.
✅ Release Checklist (v0.30.0-rc3)
- [ ] Prepare the release branch and update version numbers accordingly
using
./kuboreleaser --skip-check-before 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 - [x] update the
CurrentVersionNumberin version.go in therelease-vX.Ybranch tovX.Y.Z(-RCN) - [ ] create a draft PR from
release-vX.Ytorelease - [x] 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
- [ ]
- [x] 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
- [x] 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 -m 'Release X.Y.Z' - [ ] ⚠️ verify the tag is signed and tied to the correct commit using
git show vX.Y.Z(-RCN) - [ ] ⚠️ push the tag to GitHub using
git push origin vX.Y.Z(-RCN)- do NOT use
git push --tagsbecause it pushes all your local tags
- do NOT use
- [x] Verify ipfs/distributions's
.tool-versions'sgolangentry is set to the latest go release on the major go branch Kubo is being tested on (seego-version:). - [x] Publish to Dockerhub, NPM, and dist.ipfs.tech and GitHub using
./kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-allor follow each step below:- [x] 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
- [x] Publish the release to dist.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.tech
- [x] Publish the release to NPM
using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npm(⚠️ you might need to run the command a couple of times because GHA might not be able to see the new distribution straight away due to caching) 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
- [x] 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
- [x] Publish the release to DockerHub
- [ ] ~Run Thunderdome testing, see the Thunderdome release docs for details~
- [ ] instead, I will deploy to kubo staging and update https://github.com/ipfs/kubo/pull/10496 with steps, so next time we use this instead of thunderdome
- [x] 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 IPFS Discourse topic
Early testers ping for v0.30.0-rc3 testing :sparkles:
- [ ] Charity Engine (@rytiss, @tristanolive)
- [ ] Fission (@bmann)
- [ ] Infura (@MichaelMure)
- [ ] OrbitDB (@haydenyoung)
- [ ] Pinata (@obo20)
- [ ] Shipyard (@cewood, @ns4plabs)
- [ ] Siderus (@koalalorenzo)
- [ ] Textile (@sanderpick)
- [ ] @RubenKelevra
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
✅ Release Checklist (v0.30.0) [FINAL]
- [x] Prepare the release branch and update version numbers accordingly
using
./kuboreleaser --skip-check-before 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 - [x] 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> - [x]
Add full changelog and contributors to the changelog
- [x]
Replace the
ChangelogandContributorssections of the changelog with the stdout of./bin/mkreleaselog- do NOT copy the stderr
- [x]
- [x] verify all CI checks on the PR from
release-vX.Ytoreleaseare passing - [x]
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
- [x] 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 -m 'Release X.Y.Z' - [ ] ⚠️ verify the tag is signed and tied to the correct commit using
git show vX.Y.Z(-RCN) - [ ] ⚠️ push the tag to GitHub using
git push origin vX.Y.Z(-RCN)- do NOT use
git push --tagsbecause it pushes all your local tags
- do NOT use
- [x] Verify ipfs/distributions's
.tool-versions'sgolangentry is set to the latest go release on the major go branch Kubo is being tested on (seego-version:). - [x] Publish to Dockerhub, NPM, and dist.ipfs.tech and GitHub using
./kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-allor follow each step below:- [x] 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
- [x] Publish the release to dist.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.tech
- [x] Publish the release to NPM
using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npm(⚠️ you might need to run the command a couple of times because GHA might not be able to see the new distribution straight away due to caching) 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
- [x] 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
- [x] Publish the release to DockerHub
- [ ] Update Kubo staging environment, see the Running Kubo tests on staging for details.
- [ ]
Test last release against the current RC
- [ ]
Test last release against the current one
- [ ]
- [x] 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
- [x] ~~Test the new version with
ipfs-companion~~ (currently skipped) - [x]
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 as reviewer
- [x]
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
- [ ]
- [x]
Create a blog entry on blog.ipfs.tech
using
./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-blog --date YYYY-MM-DDor ...- [ ]
create a PR which adds a release note for the new Kubo version
- [ ]
merge the PR
- [ ]
verify the blog entry was published
- [ ]
- [x]
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
- [x]
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
- [ ]
- [x]
Create a dependency update PR
- [ ]
check out ipfs/kubo
- [ ]
run
go get -uin root directory - [ ]
run
make mod_tidy - [ ]
create a PR which updates
go.modandgo.sum - [ ]
add the PR to the next release milestone
- [ ]
- [x]
Close the release issue
🎉 Kubo v0.30.0 is out!