Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.18 #9417

Closed
BigLep opened this issue Nov 17, 2022 · 28 comments
Closed

Release 0.18 #9417

BigLep opened this issue Nov 17, 2022 · 28 comments
Assignees

Comments

@BigLep
Copy link
Contributor

BigLep commented Nov 17, 2022

Meta

See the Kubo release process for more info.

Kubo 0.18.0 Release

We're happy to announce Kubo 0.18.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

We're pushing to do another release before the end of 2022 because:

  1. Get delegated routing with HTTP into a good state (per IPIP-337: Delegated Content Routing HTTP API specs#337)
  2. General wrap up to the year

Project board: https://github.com/orgs/ipfs/projects/16/views/3?filterQuery=iteration%3A%22kubo+0.18%22

Required before RC

Items to during the RC phase before the final release

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). Idealy, do this multiple days in advance of the RC to give Bifrost the heads up that asks will be coming their way.
    • Ensure that the What's left for release section 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.18.0 branch, open a draft PR and keep updating docs/RELEASE_ISSUE_TEMPLATE.md on that branch as you go.
      • Link it in the "Meta" section above.
    • 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 and create banners. @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.18.md.
      • Skip filling out the ### Changelog section (the one where which lists all the commits and contributors) for now. We will populate it after the release branch is cut.
      • PR link:
    • Ensure the new changelog is linked in the CHANGELOG.md file.
    • Install ZSH (instructions). It is needed by the changelog creation script.
    • Ensure you have kubo checked 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.
    • Ensure that README.md is up to date.
  • Stage 1 - Initial Preparations
    • Fork a new branch (release-v0.18.0) from master.
    • Bump the version in version.go in the master branch to vX.(Y+1).0-dev via a PR (example).
  • Stage 2 - Release Candidate - if any non-trivial changes need to be included in the release, return to this stage
    • If it's not a first RC, add new commits to the release-v0.18.0 branch from master using git cherry-pick -x ...
      • Note: release-* branches are protected. You can do all needed updates on a separated branch (e.g. wip-release-v0.18.0) and when everything is settled push to release-v0.18.0
    • Bump the version in version.go in the release-v0.18.0 branch to v0.18.0-rcN.
    • If it's a first RC, create a draft PR targetting release branch 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 HEAD release-v0.18.0 commit with v0.18.0-rcN (git tag -s v0.18.0-rcN -m 'Pre-release 0.18.0-rcn')
      • Run git show v0.18.0-rcN to ensure the tag is correct.
      • ⚠️ Push the v0.18.0-rcN tag to GitHub (git push origin v0.18.0-rcN; DO NOT USE git push --tags because it pushes all your local tags).
    • Add artifacts to https://dist.ipfs.tech by making a PR against ipfs/distributions
      • Clone the ipfs/distributions repo locally.
      • Create a new branch (kubo-release-v0.18.0-rcn) from master.
      • Run ./dist.sh add-version kubo v0.18.0-rcN to add the new version to the versions file (instructions).
        • dist.sh will print WARNING: not marking pre-release kubo v0.18.0-rcN as the current version..
      • Push the kubo-release-v0.18.0-rcn branch 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
        • master build will publish the artifacts to https://dist.ipfs.io in around 30 minutes
      • Ensure that the artifacts are available at https://dist.ipfs.io
    • 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.18.0-rcN as the tag.
      • Link to the release issue in the description.
      • Link to the relevant changelog in the description.
      • Check This is a pre-release.
    • Synchronize release artifacts by running sync-release-assets workflow.
    • Announce the RC
      • Create a new post on IPFS Discourse. (example)
        • Use Kubo v0.18.0-rcn Release Candidate is out! as the title.
        • Use kubo and go-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 topic globally so that it stays at the top of the category.
      • If there is no more important banner currently set on Discourse (e.g. IPFS Camp announcement), make the topic into a banner.
      • Check if Discourse post was automatically copied to:
      • Mention early testers in the comment under the release issue (example).
  • 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.
    • IPFS Application Testing.
      • IPFS Desktop
        • Upgrade to the RC in ipfs-desktop
        • Run npm install to update package-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.
  • Stage 5 - Release - ONLY FOR FINAL RELEASE
    • Prepare the release branch.
      • Bump the version in version.go in the release-v0.18.0 branch to 0.18.0.
      • Update the docs/changelogs/v0.18.md with the new commits and contributors.
        • Run ./bin/mkreleaselog twice to generate the changelog and copy the output.
        • The first run of the script might be poluted with git clone output.
        • Paste the output into the ### Changelog section of the changelog file inside the <details><summary></summary></details> block.
        • Commit the changelog changes.
      • Push the release-v0.18.0 branch to GitHub (git push origin release-v0.18.0)
      • Mark the PR created from release-v0.18.0 as ready for review.
        • Ensure the PR is targetting release branch.
        • Ensure that CI is green.
        • Have release reviewer review the PR.
      • Merge the PR into release branch using the Create a merge commit (do NOT use Squash and merge nor Rebase and merge because we need to be able to sign the merge commit).
        • Do not delete the release-v0.18.0 branch.
      • Checkout the release branch 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 HEAD release commit with v0.18.0 (git tag -s v0.18.0 -m 'Release 0.18.0')
        • Run git show v0.18.0 to ensure the tag is correct.
        • ⚠️ Push the v0.18.0 tag to GitHub (git push origin v0.18.0; DO NOT USE git push --tags because it pushes all your local tags).
    • Publish the release.
    • Cut the release on GitHub (instructions, example)
      • Use v0.18.0 as the tag.
      • Copy the relevant changelog into the release description.
      • Keep the release notes as trim as possible (e.g. remove top headers where possible, example)
    • Synchronize release artifacts by running sync-release-assets workflow.
    • TODO: https://github.com/protocol/bifrost-infra/issues/2184#issuecomment-1315279257
    • 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.18.0 Release is out! as the title.
        • Use kubo and go-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 topic globally so that it stays at the top of the category.
      • If there is no more important banner currently set on Discourse (e.g. IPFS Camp announcement), make the topic into a banner.
      • 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.17.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
    • Get the blog post created
    • Share the link to the GitHub release
      • Twitter (request in Filecoin Slack channel #shared-pl-marketing-requests; example)
      • Reddit
  • Stage 6 - Post-Release
    • Merge the release branch back into master, ignoring the changes to version.go (keep the -dev version from master).
    • Create an issue using this release issue template for the next release.
    • Close this 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:

@Jorropo
Copy link
Contributor

Jorropo commented Dec 6, 2022

I don't knows how that will play exactly into the release process but we will have to publish a migration binary to dist.ipfs.io too, that will get downloaded by Kubo, I guess it needs to be released before or when Kubo is released to avoid race conditions where kubo can't find the migration binary.

@BigLep
Copy link
Contributor Author

BigLep commented Dec 8, 2022

2022-12-07 update:

We aren't going to be ready for an RC early Thursday, 2022-12-08.

The previous "nice to haves" have become "required" since some of the "required" items needed a repo migration. Since we were already going to be doing a repo migration anyways, we're taking on all the things (including the previous "nice to haves") for the repo migration.

The issue description is the ultimate source of truth but we have these tracks of work:

  1. (@Jorropo @lidel): Repo migrations. This is related to multiple features. We want to publish @Jorropo's (migrations needed after updating go-libp2p v0.24.0 update #9410 ) first and then @lidel will put additional migrations on top.
  2. (@Jorropo): go-lipbp2p 0.24 upgrade: WIP: update go-libp2p to v0.24.0 #9423
  3. (@lidel unless he defers to @ajnavarro): Review/merge the resource manager docs: docs: libp2p resource management #9468

@Jorropo or @lidel : please callout if there is work that other can help you with like @ajnavarro .

We'll talk about the 0.18 RC date during Kubo standup on 2022-12-08.

In summary @galargh : there isn't anything for you to immediately jump on concerning 0.18 when you start work on 2022-12-08. That said, lets please make sure we've got Bifrost engaged for the deployments we'll want them to do. (I'm hopeful we can do one-box deployments early Friday so we get data over the weekend.)

@BigLep
Copy link
Contributor Author

BigLep commented Dec 8, 2022

@Jorropo: how are the things on your stack going:

  1. feat: add fs-repo-12-to-13 fs-repo-migrations#162
  2. WIP: update go-libp2p to v0.24.0 #9423
  3. Enable WebTransport by default #9292

I assume this isn't completing 2022-12-08, but let me know you're estimating so we can make it clear in the release issue. Please also raise if it would helpful to have others helping.

@marten-seemann
Copy link
Member

Heads-up from libp2p: We're planning to release a v0.24.1 patch release before the kubo final release: libp2p/go-libp2p#1940. As this is a patch release, updating will be trivial (no breaking changes, by definition).

You might want to consider putting this on the checklist for the final release.

@BigLep
Copy link
Contributor Author

BigLep commented Dec 9, 2022

2022-12-08 update:

We are not ready yet to release on 2022-12-09. We have these open items (also in issue description):

@galargh : as you can see, we're not ready for you to jump into a release for your Friday morning. Thanks for being ready though.

@galargh
Copy link
Contributor

galargh commented Dec 9, 2022

Thanks for the update! I updated the dates in the issue too.

@BigLep
Copy link
Contributor Author

BigLep commented Dec 9, 2022

2022-12-09 Update
We're not ready to execute the release yet. We're targeting 2022-12-12. The issue description tracks what is remaining.

achingbrain pushed a commit to multiformats/js-multiaddr that referenced this issue Dec 10, 2022
This PR adds support for `/quic-v1` which will be enabled by default in
Kubo 0.18 (ipfs/kubo#9417,
ipfs/kubo#9410).

@achingbrain @tinytb FYSA an important caveat is that WebTransport addrs
will be `/quic-v1/webtransport`
(as noted in ipfs/kubo#9410).

Ref.
- ipfs/kubo#9410
- multiformats/multiaddr#145

Signed-off-by: Marcin Rataj <[email protected]>
@lidel
Copy link
Member

lidel commented Jan 22, 2023

Blocking items are resolved.
@galargh I think we are good to go for the release on Monday.

@BigLep
Copy link
Contributor Author

BigLep commented Jan 23, 2023

Agreed @galargh - please proceed with the release.
I know we havne't had full confirmation on the Bifrost deployment, but it has been deployed to some banks for days and we're not getting reports back of problems. If there are problems that can't wait for 0.19, we can do a patch release sooner (0.18.1).
Thanks!

@galargh
Copy link
Contributor

galargh commented Jan 23, 2023

I cherry-picked all the new commits from master to the release-v0.18 branch and I'm ready to proceed with the release. Waiting for confirmation from @lidel whether to proceed with 0.18.0 or 0.18.0-RC3 in the light of https://github.com/protocol/bifrost-infra/issues/2221#issuecomment-1400091522.

@galargh
Copy link
Contributor

galargh commented Jan 23, 2023

Going forward with 0.18.0.

@galargh
Copy link
Contributor

galargh commented Jan 23, 2023

🎉 Kubo v0.18.0 is out!

@BigLep BigLep moved this from 🥞 Todo to 🏃‍♀️ In Progress in IPFS Shipyard Team Jan 24, 2023
@galargh
Copy link
Contributor

galargh commented Jan 27, 2023

The v0.18.0 release is complete! Here's a link to the issue for the next one - v0.18.1 - #9579

@galargh galargh closed this as completed Jan 27, 2023
@github-project-automation github-project-automation bot moved this from 🏃‍♀️ In Progress to 🎉 Done in IPFS Shipyard Team Jan 27, 2023
@github-project-automation github-project-automation bot moved this from 🥺 Backlog to 🥳 Done in InterPlanetary Developer Experience Jan 27, 2023
@galargh galargh unpinned this issue Jan 27, 2023
@galargh galargh mentioned this issue Feb 6, 2023
@galargh galargh mentioned this issue Apr 6, 2023
@hacdias hacdias mentioned this issue Jun 13, 2023
@Jorropo Jorropo mentioned this issue Jul 27, 2023
@Jorropo Jorropo mentioned this issue Aug 7, 2023
96 tasks
@Jorropo Jorropo mentioned this issue Sep 25, 2023
14 tasks
@hacdias hacdias mentioned this issue Nov 1, 2023
11 tasks
@hacdias hacdias mentioned this issue Dec 6, 2023
9 tasks
@hacdias hacdias mentioned this issue Jan 11, 2024
3 tasks
@hacdias hacdias mentioned this issue Feb 20, 2024
8 tasks
@hacdias hacdias mentioned this issue Apr 9, 2024
11 tasks
@hacdias hacdias mentioned this issue May 27, 2024
9 tasks
@lidel lidel mentioned this issue Aug 21, 2024
32 tasks
@gammazero gammazero mentioned this issue Oct 3, 2024
34 tasks
@lidel lidel mentioned this issue Oct 30, 2024
28 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Archived in project
Development

No branches or pull requests

6 participants