-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Description
Meta
- Release owner: @galargh
- Release reviewer: @ajnavarro
- Expected RC date:
2022-10-202022-11-032022-11-10 - Expected final release date:
2022-11-032022-11-102022-11-172022-11-212022-11-22 - Accompanying PR for improving the release process: docs: release process updates from v0.17.0 #9391
See the Kubo release process for more info.
Initial planning
Themes
- (@guseggert) Filecoin/IPFS interop
- Reframe in production: [Tracking issue] http delegated routing used in production #9150
- Reframe GET dag-cbor support
- Any necessary Bitswap fixes/improvements
- Prepare for IPFS Camp
- (All) 6-month Roadmapping
- (@ajnavarro) Protect Kubo nodes by default with the go-libp2p resource manager: Improve resource manager UX #9001
- (@Jorropo) Address DAG handling issues
- (@Jorropo) UnixFS spec
- (@hacdias) Gateway:
- Brave fix around DNSLinks on localhost: Gateway: add UseInlinedDNSLink flag to config #9243
- dag-json / dag-cbor responses: feat(gateway): JSON and CBOR response formats (IPIP-328) #9335
- TAR responses: feat(gateway): TAR response format #9029
- Cleanup the Kubo RPC story: [Tracking Issue] Cleanup Kubo RPC Client Story #9142
Kubo 0.17.0 Release
We're happy to announce Kubo 0.17.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
Nice to have
🔦 Highlights
< top highlights for this release notes. For ANY version (final or RCs) >
✅ Release Checklist
Checklist:
- Stage 0 - Prerequisites
- Open an issue against bifrost-infra ahead of the release (example).
- Spell out all that we want updated - gateways, the bootstraper and the cluster/preload nodes
- Mention @protocol/bifrost-team in the issue and let them know the expected date of the release
- Ensure that the
What's left for releasesection has all the checkboxes checked. If that's not the case, discuss the open items with Kubo maintainers and update the release schedule accordingly. - Create
docs-release-v0.17.0branch, open a draft PR and keep updatingdocs/RELEASE_ISSUE_TEMPLATE.mdon that branch as you go. - Ensure you have a GPG key generated and added to your GitHub account. This will enable you to created signed tags.
- Ensure you have admin access to IPFS Discourse. Admin access is required to globally pin posts. @2color might be able to assist you.
- Access to #bifrost channel in FIL Slack might come in handy. Ask the release reviewer to invite you over.
- Access to #shared-pl-marketing-requests channel in FIL Slack will be required to request social shares. Ask the release reviewer to invite you over.
- After the release is deployed to our internal infrastructure, you're going to need read access to IPFS network metrics dashboards. Open an access request in https://github.com/protocol/pldw/issues/new/choose if you don't have it yet (example).
- You're also going to need NPM installed on your system. See here for instructions.
- Prepare changelog proposal in docs/changelogs/v0.17.md.
- Skip filling out the
### Changelogsection (the one where which lists all the commits and contributors) for now. We will populate it after the release branch is cut.
- Skip filling out the
- Install ZSH (instructions). It is needed by the changelog creation script.
- Ensure you have
kubochecked out under$(go env GOPATH)/src/github.com/ipfs/kubo. This is required by the changelog creation script.- 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.
- If you want your clone to live in a different location, you can symlink it to the expected location by running
- Ensure that README.md is up to date.
- Open an issue against bifrost-infra ahead of the release (example).
- Stage 1 - Initial Preparations
- Upgrade to the latest patch release of Go that CircleCI has published (currently used version:
1.19.1)- See the list here: https://hub.docker.com/r/cimg/go/tags
- ipfs/distributions: bump this version
- ipfs/kubo: example PR
- ipfs/ipfs-docs: example PR
- Fork a new branch (
release-v0.17.0) frommaster. - Bump the version in
version.goin themasterbranch tov0.18.0-devvia a PR (example).
- Upgrade to the latest patch release of Go that CircleCI has published (currently used version:
- Stage 2 - Release Candidate - if any non-trivial changes need to be included in the release, return to this stage
- Bump the version in
version.goin therelease-v0.17.0branch tov0.17.0-rcN. - If applicable, add new commits to the
release-v0.17.0branch frommasterusinggit cherry-pick -x ...- Note:
release-*branches are protected. You can do all needed updates on a separated branch (e.g.wip-release-v0.17.0) and when everything is settled push torelease-v0.17.0
- Note:
- Push the
release-v0.17.0branch to GitHub (git push origin release-v0.17.0) and create a draft PR targettingreleasebranch if it doesn't exist yet (example). - Wait for CI to run and complete PR checks. All checks should pass.
- Create a signed tag for the release candidate.
- This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with
⚠️ with the release reviewer. -
⚠️ Tag HEADrelease-v0.17.0commit withv0.17.0-rcN(git tag -s v0.17.0-rcN -m 'Pre-release 0.17.0-rcn') - Run
git show v0.17.0to ensure the tag is correct. -
⚠️ Push thev0.17.0tag to GitHub (git push origin v0.17.0; DO NOT USEgit push --tagsbecause it pushes all your local tags).
- This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with
- Add artifacts to https://dist.ipfs.tech by making a PR against ipfs/distributions
- Clone the
ipfs/distributionsrepo locally. - Create a new branch (
kubo-release-v0.17.0-rcn) frommaster. - Run
./dist.sh add-version kubo v0.17.0-rcNto add the new version to theversionsfile (instructions).dist.shwill print WARNING: not marking pre-release kubo v0.17.0-rc1n as the current version..
- Push the
kubo-release-v0.17.0-rcnbranch to GitHub and create a PR from that branch (example). - Ask for a review from the release reviewer.
- Enable auto-merge for the PR.
- PR build will build the artifacts and generate a diff in around 30 minutes
- PR will be merged automatically once the diff is approved
masterbuild will publish the artifacts to https://dist.ipfs.io in around 30 minutes
- Ensure that the artifacts are available at https://dist.ipfs.io
- Clone the
- Publish the RC to the NPM package 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)
- Cut a pre-release on GitHub (instructions, example)
- Use
v0.17.0-rcNas the tag. - Link to the release issue in the description.
- Link to the relevant changelog in the description.
- Check
This is a pre-release.
- Use
- Synchronize release artifacts by running sync-release-assets workflow.
- Announce the RC
- Create a new post on IPFS Discourse. (example)
- Use
Kubo v0.17.0-rcn Release Candidate 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.
- Use
- Pin the topic globally so that it stays at the top of the category.
- Check if Discourse post was automatically copied to:
- IPFS Discord #ipfs-chatter
- FIL Slack #ipfs-chatter
- Matrix https://matrix.to/#/#ipfs-chatter:ipfs.io
- Mention early testers in the comment under the release issue (example).
- Create a new post on IPFS Discourse. (example)
- Bump the version in
- Stage 3 - Internal Testing
- Infrastructure Testing.
- Update the issue against bifrost-infra (example).
- Mention @protocol/bifrost-team in the issue to let them know the release is ready
- [Optional] Reply under a message about the issue in the #bifrost channel on FIL Slack once the RC is out. Send the message to the channel.
- Check metrics every day.
- Compare the metrics trends week over week.
- If there is an unexpected variation in the trend, message the #bifrost channel on FIL Slack and ask for help investigation the cause.
- Update the issue against bifrost-infra (example).
- IPFS Application Testing.
- IPFS Desktop
- Upgrade to the RC in ipfs-desktop
- Run
npm installto updatepackage-lock.json. - Push to a branch (example)
- Open a draft PR to track through the final release (example)
- Ensure CI tests pass
- IPFS Companion
- Start kubo daemon of the version to release.
- Start a fresh chromium or chrome instance using
chromium --user-data-dir=$(mktemp -d)(macos/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=$(mktemp -d)) - Start a fresh firefox instance using
firefox --profile $(mktemp -d)(macos/Applications/Firefox.app/Contents/MacOS/firefox --profile $(mktemp -d)) - Install IPFS Companion from vendor-specific store.
- Check that the comunication between Kubo daemon and IPFS companion is working properly checking if the number of connected peers changes.
- IPFS Desktop
- Infrastructure Testing.
- Stage 5 - Release - ONLY FOR FINAL RELEASE
- Prepare the
releasebranch.- Bump the version in
version.goin therelease-v0.17.0branch tov0.17.0. - Update the docs/changelogs/v0.17.md with the new commits and contributors.
- Run
./bin/mkreleaselogtwice to generate the changelog and copy the output. - The first run of the script might be poluted with
git cloneoutput. - Paste the output into the
### Changelogsection of the changelog file inside the<details><summary></summary></details>block. - Commit the changelog changes.
- Run
- Push the
release-v0.17.0branch to GitHub (git push origin release-v0.17.0) - Mark the PR created from
release-v0.17.0as ready for review.- Ensure the PR is targetting
releasebranch. - Ensure that CI is green.
- Have release reviewer review the PR.
- Ensure the PR is targetting
- Merge the PR into
releasebranch using theCreate a merge commit(do NOT useSquash and mergenorRebase and mergebecause we need to be able to sign the merge commit).- Do not delete the
release-v0.17.0branch.
- Do not delete the
- Checkout the
releasebranch locally.- Remember to pull the latest changes.
- Create a signed tag for the release.
- This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with
⚠️ with the release reviewer. -
⚠️ Tag HEADreleasecommit withv0.17.0(git tag -s v0.17.0 -m 'Release 0.17.0') - Run
git show v0.17.0to ensure the tag is correct. -
⚠️ Push thev0.17.0tag to GitHub (git push origin v0.17.0; DO NOT USEgit push --tagsbecause it pushes all your local tags).
- This is a dangerous operation, as it is difficult to reverse due to Go modules and automated Docker image publishing. Remember to verify the commands you intend to run for items marked with
- Bump the version in
- Publish the release.
- Wait for Publish docker image workflow run initiated by the tag push to finish.
- Add artifacts to https://dist.ipfs.tech by making a PR against ipfs/distributions
- Clone the
ipfs/distributionsrepo locally. - Create a new branch (
kubo-release-v0.17.0) frommaster. - Run
./dist.sh add-version kubo v0.17.0to add the new version to theversionsfile (instructions). - Push the
kubo-release-v0.17.0branch to GitHub and create a PR from that branch (example). - Ask for a review from the release reviewer.
- Enable auto-merge for the PR.
- PR build will build the artifacts and generate a diff in around 30 minutes
- PR will be merged automatically once the diff is approved
masterbuild will publish the artifacts to https://dist.ipfs.io in around 30 minutes
- Ensure that the artifacts are available at https://dist.ipfs.io
- Clone the
- Publish the release to the NPM package 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)
- Cut the release on GitHub (instructions, example)
- Synchronize release artifacts by running sync-release-assets workflow.
- Announce the release
- Add a link to the release to this release issue as a comment.
- Create a new post on IPFS Discourse. (example)
- Use
Kubo v0.17.0 Release 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.
- Use
- Pin the topic globally so that it stays at the top of the category.
- Check if Discourse post was automatically copied to:
- IPFS Discord #ipfs-chatter
- FIL Slack #ipfs-chatter
- Matrix
- Add a link from release notes to Discuss post (like we did here: https://github.com/ipfs/kubo/releases/tag/v0.15.0)
- Update the draft PR created for interop to use the new release and mark it as ready for review.
- Update the draft PR created for IPFS Desktop to use the new release and mark it as ready for review.
- Update docs
- Run https://github.com/ipfs/ipfs-docs/actions/workflows/update-on-new-ipfs-tag.yml to generate a PR to the docs repo
- Merge the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls (example)
- Get the blog post created and shared
- Submit a request for blog post creation using the form.
- Notify marketing in #shared-pl-marketing-requests about the blog entry request (since the form tends to go to spam; example).
- The post is live on https://blog.ipfs.io
- Share the blog post
- Submit a request for blog post creation using the form.
- Prepare the
- Stage 6 - Post-Release
- Merge the
releasebranch back intomaster, ignoring the changes toversion.go(keep the-devversion from master). - Create an issue using this release issue template for the next release.
- Close this release issue.
- Merge the
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 wantedlabel in the ipfs/kubo repo - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at discuss.ipfs.io and help users finding their answers.
- Join the 🚀 IPFS Core Implementations Weekly Sync 🛰 and be part of the action!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels