Repository navigation
Release 0.22 #9911
Copy link
Copy link
Closed
Description
Meta
- Release owner: @Jorropo
- Release engineer: @Jorropo
- Release reviewer: @hacdias
- Expected RC date:
tentatively 2023-07-202023-07-242023-07-31 - 🚢 Expected final release date: tentatively
2023-07-272023-08-032023-08-07 - Accompanying PR for improving the release process: (example: docs: release process updates from v0.17.0 #9391): Kubo v0.22.0 feedback ipfs-inactive/kuboreleaser#17
- Accompanying Issue for updating the infra: (example: https://github.com/protocol/bifrost-infra/issues/2221)
Items in scope
We expect to be working on the items listed in IPFS Shipyard Team (view). We don't expect all of these to land and intend to start the release on the dates above.
Changelog of what made it in: https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.22.md
MUSTs
Below things MUST be included in 0.22:
- feat(gateway): support for ipip-412 parameters #9989
- fix: handle _redirects for If-None-Match headers boxo#412
- ci: simplify Dockerfile and add docker image testing #10021 (needs cherry-picking)
- Update to go-libp2p 0.29.1
SHOULDs
- update go-libp2p to v0.29.0 #10001
- IPNS could not resolve name through Gateway #9927
- bitswap/client: add basic traceable blocks boxo#308
- core/bootstrap: fix panic without backup bootstrap peer functions #10029
Before 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 DiscourseI have mods, that enough- 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.
- 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
-
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 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.io
- 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
- 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 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
-
-
Ask Brave to update Kubo in Brave Desktop
-
use this link to create an issue for the new Kubo version
-
post link to the issue in
#shared-pl-bravefor visibility
-
-
Create a blog entry on blog.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
-
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
- StatusShow more project fields🎉 Done
Activity
p-shahi commentedon Jun 29, 2023
Given 0.21's release date is 2023-07-04 per #9814 (comment)
is 0.22's RC still slated for 2023-07-13 ?
Asking because in go-libp2p we are planning to cut 0.29 on 2023-07-10 (a few days ahead of the Kubo 0.22 RC) - knowing this information would help us make a decision on whether we can give our release some more time (to test, include changes, etc.)
BigLep commentedon Jun 29, 2023
Good callout. This will push out at least a week. I have updated the issue description to say:
BigLep commentedon Jul 6, 2023
I updated the issue description.
Any date changes will be communicated here.
BigLep commentedon Jul 20, 2023
The RC will not happen on 2023-07-20 due to maintainer availability to make it happen and being inflight landing some in progress PRs. The new target date is 2023-07-24.
BigLep commentedon Jul 21, 2023
My summary understanding of where we're at before doing the RC. (The issues/PRs themselves should be the source of truth though.)
lidel commentedon Jul 27, 2023
The RC2 or the final version should include the Docker fix for ARM from #10021 (added to the MUST list above). Tested and confirmed the fix works as expected.
Jorropo commentedon Jul 31, 2023
Early testers ping for RC1 testing 😄.
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
aphelionz commentedon Jul 31, 2023
Pinging @haydenyoung for OrbitDB :)
Jorropo commentedon Jul 31, 2023
@aphelionz you are still on the list https://github.com/ipfs/kubo/blob/master/docs/EARLY_TESTERS.md#who-has-signed-up do you want to be removed / changed ?
aphelionz commentedon Jul 31, 2023
@Jorropo Yes, for now at least.
chore: change orbitdb to haydenyoung EARLY_TESTERS
Jorropo commentedon Jul 31, 2023
@aphelionz 67ac4f4 🎉
2 remaining items
BigLep commentedon Aug 1, 2023
Barring no blocking issues found, we expect to do the final release on Thursday, 2023-08-03. (The issue description has been updated.)
BigLep commentedon Aug 3, 2023
The Kubo 0.22 release isn't done yet, but here was the status of the 0.22 iteration before prepping for 0.23:
IPFS Shipyard Team (view)
Table form (missing some info)
List form (more info)
BigLep commentedon Aug 3, 2023
The Kubo 0.22 release has been pushed back because we need to get the latest 0.29.x release. It wasn't available in time for 2023-08-04, and we don't release on Fridays. As a result, this has bumped to 2023-08-07.
marten-seemann commentedon Aug 3, 2023
@BigLep I just merged the PR a minute ago. The release is available now: https://github.com/libp2p/go-libp2p/releases/tag/v0.29.1.
rekpero commentedon Aug 7, 2023
@BigLep is there any update on the release?
Jorropo commentedon Aug 7, 2023
@rekpero I'm working on it right now 🙂 if there are no surprises expect tomorrow late morning EU TZ in order to get review in.
Jorropo commentedon Aug 8, 2023
Save of the RC1 checklist:
The release
This section covers tasks to be done during each release.
using
./kuboreleaser --skip-check-before release --version vX.Y.Z(-rcN) prepare-branchor ...release-vX.Y.Zmasteras base ifZ == 0releaseas base ifZ > 0CurrentVersionNumberin version.go in themasterbranch tovX.Y+1.0-devCurrentVersionNumberin version.go in therelease-vX.Ybranch tovX.Y.Z(-RCN)release-vX.Ytoreleasemasterto therelease-vX.Y.Zusinggit cherry-pick -x <commit>ChangelogandContributorssections of the changelog with the stdout of./bin/mkreleaselogrelease-vX.Ytoreleaseare passingrelease-vX.Ytoreleaseusing theCreate a merge commitSquash and mergenorRebase and mergebecause we need to be able to sign the merge commitrelease-vX.Ybranchusing
./kuboreleaser release --version vX.Y.Z(-rcN) tagor ...git tag -s vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)'releasebranch usinggit tag -s vX.Y.Z(-RCN) -m 'Release X.Y.Z(-RCN)'git show vX.Y.Z(-RCN)git push origin vX.Y.Z(-RCN)git push --tagsbecause it pushes all your local tagsusing
./kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-dockerhubor ...using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-distributionsor ..../dist.sh add-version kubo vX.Y.Z(-RCN)to add the new version to theversionsfiledists/kubo/versionsanddists/go-ipfs/versions(dists/kubo/current_versionanddists/go-ipfs/current_version)using⚠️ 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 ...
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-npm(using
./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-githubor ...vX.Y.Z(-RCN)tagThis is a pre-releasecheckboxcopy the changelog (without the header) in the descriptiondo NOT check theThis is a pre-releasecheckboxusing
./kuboreleaser release --version vX.Y.Z(-rcN) promoteor ...Kubo vX.Y.Z(-RCN) is out!as the titlekuboandgo-ipfsas topics##) in the descriptionAdd the link to the IPFS Discourse topic to the GitHub Release descriptioncreate an issue comment linking to the release on the release issueask the marketing team to tweet about the release in #shared-pl-marketing-requests in FIL Slackpost the link to the GitHub Release to Redditipfs-companionusing
./kuboreleaser release --version vX.Y.Z(-rcN) test-ipfs-companionor ...vX.Y.Z(-RCN)as the Kubo image versionusing
./kuboreleaser release --version vX.Y.Z(-rcN) update-interopor ...npm installpackage.jsonandpackage-lock.jsonusing
./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-desktopor ...npm installpackage.jsonandpackage-lock.jsonusing
./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-docsor ...#shared-pl-bravefor visibilityusing
./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-blog --date YYYY-MM-DDor ...-dev) version,using
./kuboreleaser release --version vX.Y.Z(-rcN) merge-branchor ...merge-release-vX.Y.Zfromreleasemerge-release-vX.Y.Ztomasterusing
./kuboreleaser release --version vX.Y.Z(-rcN) prepare-nextor ...go get -uin root directorygo mod tidyin root directorygo mod tidyindocs/examples/kubo-as-a-librarydirectorygo.modandgo.sumJorropo commentedon Aug 9, 2023
Release is here https://github.com/ipfs/kubo/releases/tag/v0.22.0 🎉
Jorropo commentedon Aug 15, 2023
@galargh the blocking last item on here is
Update Kubo docs, running the workflow does not create the PR, what am I missing ?galargh commentedon Aug 16, 2023
Looks like you've already updated
ipfs-docslast week - ipfs/ipfs-docs#1658. Since the repo is already up to date, the command is a no-op.I have noticed another issue though. Since we released https://github.com/ipfs/kubo/releases/tag/v0.21.1 after https://github.com/ipfs/kubo/releases/tag/v0.22.0, the former was incorrectly marked as latest. Among other things, it means that ipfs/ipfs-docs#1668 was created. I now closed it and I manually set the v0.22.0 to latest. I'm also going to link this comment in ipfs-inactive/kuboreleaser#17 so that I remember to tackle it when I go through the rest of the feedback.
Jorropo commentedon Aug 16, 2023
Oh I see thx, so I think this could be closed.
BigLep commentedon Aug 21, 2023
For visibility, the Thunderdome results are here: https://pl-strflt.notion.site/kubo-prerelease-22-93caf901a408490480438b48974d8a07?pvs=4