ipfs / kubo

An IPFS implementation in Go
https://docs.ipfs.tech/how-to/command-line-quick-start/
Other
16.14k stars 3.01k forks source link

Release 0.30 #10436

Closed lidel closed 1 month ago

lidel commented 5 months ago

Meta

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](https://github.com/ipfs/kubo/actions/runs/9455528845/job/26045516371#step:13:8)) - [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](https://github.com/ipfs/someguy/issues/78#issuecomment-2288482408); `CanConnect` fix 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/kubo/issues/10501 - [x] workaround to unblock release: https://github.com/ipfs/kubo/pull/10502 ## Nice To Have (Optional) - [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
lidel commented 2 months ago

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.

lidel commented 2 months ago

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.

lidel commented 2 months ago

✅ Release Checklist (v0.30.0-rc1)

  • [x] Create the release tag
    using ./kuboreleaser release --version vX.Y.Z(-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 vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)'
    • [ ] ⚠️ tag the HEAD commit of the release branch using git 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 --tags because it pushes all your local tags
  • [x] Publish the release to DockerHub
    using ./kuboreleaser --skip-check-before --skip-run release --version vX.Y.Z(-rcN) publish-to-dockerhub or ...
  • [x] Verify ipfs/distributions's .tool-versions's golang entry is set to the latest go release on the major go branch Kubo is being tested on (see go-version:).
  • [x] Publish the release to dist.ipfs.tech
    using ./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-distributions or ...
    • [ ] check out ipfs/distributions
    • [ ] run ./dist.sh add-version kubo vX.Y.Z(-RCN) to add the new version to the versions file
    • usage
    • [ ] create and merge the PR which updates dists/kubo/versions and dists/go-ipfs/versions ( and dists/kubo/current_version and dists/go-ipfs/current_version)
    • example
    • [ ] 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-github or ...
    • [ ] 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-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
  • [ ] 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) promote or ...
  • [ ] Test the new version with ipfs-companion (currently skipped)
    using ./kuboreleaser release --version vX.Y.Z(-rcN) test-ipfs-companion or ...
    • [ ] run the e2e
    • use vX.Y.Z(-RCN) as the Kubo image version
    • [ ] wait for the e2e workflow run to finish
  • [ ] Update Kubo in ipfs-desktop
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-desktop or ...
    • [ ] check out ipfs/ipfs-desktop
    • [ ] run npm install
    • [ ] create a PR which updates package.json and package-lock.json
    • [ ] add @SgtPooki as reviewer
  • [ ] Update Kubo docs
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-docs or ...
  • [ ] Create a blog entry on blog.ipfs.tech
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-blog --date YYYY-MM-DD or ...
    • [ ] create a PR which adds a release note for the new Kubo version
    • example
    • [ ] 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-branch or ...
    • [ ] create a new branch merge-release-vX.Y.Z from release
    • [ ] create and merge a PR from merge-release-vX.Y.Z to master
  • [ ] Prepare for the next release
    using ./kuboreleaser release --version vX.Y.Z(-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 make mod_tidy
    • [ ] create a PR which updates go.mod and go.sum
    • [ ] add the PR to the next release milestone
  • [ ] Close the release issue
  • lidel commented 2 months ago

    RC1 is ready for testing:

    lidel commented 2 months ago

    Early testers ping for v0.30.0-rc1 testing 😄.

    You're getting this message because you're listed here. Please update this list if you no longer want to be included.

    2color commented 2 months ago

    @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?

    lidel commented 2 months ago

    @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.

    lidel commented 2 months ago

    ✅ Release Checklist (v0.30.0-rc2)

    The release

    This section covers tasks to be done during each release.

  • [x] Create the release tag
    using ./kuboreleaser release --version vX.Y.Z(-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 vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)'
    • [ ] ⚠️ tag the HEAD commit of the release branch using git 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 --tags because it pushes all your local tags
  • [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-all or 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-dockerhub or ...
    • [ ] 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's golang entry is set to the latest go release on the major go branch Kubo is being tested on (see go-version:).
    • [x] Publish the release to dist.ipfs.tech
      using ./kuboreleaser release --version vX.Y.Z(-rcN) publish-to-distributions or ...
    • [ ] check out ipfs/distributions
    • [ ] run ./dist.sh add-version kubo vX.Y.Z(-RCN) to add the new version to the versions file
    • [ ] create and merge the PR which updates dists/kubo/versions and dists/go-ipfs/versions ( and dists/kubo/current_version and dists/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-github or ...
    • [ ] 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-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
  • [ ] 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) promote or ...
  • lidel commented 2 months ago

    Early testers ping for v0.30.0-rc2 testing ✨

    You're getting this message because you're listed here. Please update this list if you no longer want to be included.

    lidel commented 1 month ago

    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.

    2color commented 1 month ago

    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.

    lidel commented 1 month ago

    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.

    2color commented 1 month ago

    The WebRTC maxMessageSize change has been reverted in js-libp2p, so it's no longer a blocker.

    lidel commented 1 month ago

    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.

    lidel commented 1 month ago

    ✅ Release Checklist (v0.30.0-rc3)

  • [x] Create the release tag
    using ./kuboreleaser release --version vX.Y.Z(-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 vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)'
    • [ ] ⚠️ tag the HEAD commit of the release branch using git 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 --tags because it pushes all your local tags
  • [x] Verify ipfs/distributions's .tool-versions's golang entry is set to the latest go release on the major go branch Kubo is being tested on (see go-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-all or 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-dockerhub or ...
    • [ ] 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-distributions or ...
    • [ ] check out ipfs/distributions
    • [ ] run ./dist.sh add-version kubo vX.Y.Z(-RCN) to add the new version to the versions file
    • [ ] create and merge the PR which updates dists/kubo/versions and dists/go-ipfs/versions ( and dists/kubo/current_version and dists/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-github or ...
    • [ ] 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-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
  • [ ] ~Run Thunderdome testing, see the Thunderdome release docs for details~
  • [x] Promote the release
    using ./kuboreleaser release --version vX.Y.Z(-rcN) promote or ...
  • lidel commented 1 month ago

    Early testers ping for v0.30.0-rc3 testing :sparkles:

    You're getting this message because you're listed here. Please update this list if you no longer want to be included.

    lidel commented 1 month ago

    ✅ Release Checklist (v0.30.0) [FINAL]

  • [x] Create the release tag
    using ./kuboreleaser release --version vX.Y.Z(-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 vX.Y.Z(-RCN) -m 'Prerelease X.Y.Z(-RCN)'
    • [ ] ⚠️ tag the HEAD commit of the release branch using git 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 --tags because it pushes all your local tags
  • [x] Verify ipfs/distributions's .tool-versions's golang entry is set to the latest go release on the major go branch Kubo is being tested on (see go-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-all or 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-dockerhub or ...
    • [ ] 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-distributions or ...
    • [ ] check out ipfs/distributions
    • [ ] run ./dist.sh add-version kubo vX.Y.Z(-RCN) to add the new version to the versions file
    • [ ] create and merge the PR which updates dists/kubo/versions and dists/go-ipfs/versions ( and dists/kubo/current_version and dists/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-github or ...
    • [ ] 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-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
  • [ ] 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) promote or ...
  • [x] Test the new version with ipfs-companion (currently skipped)
    using ./kuboreleaser release --version vX.Y.Z(-rcN) test-ipfs-companion or ...
    • [ ] run the e2e
    • use vX.Y.Z(-RCN) as the Kubo image version
    • [ ] wait for the e2e workflow run to finish
  • [x] Update Kubo in ipfs-desktop
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-desktop or ...
    • [ ] check out ipfs/ipfs-desktop
    • [ ] run npm install
    • [ ] create a PR which updates package.json and package-lock.json
    • [ ] add @SgtPooki as reviewer
  • [x] Update Kubo docs
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-docs or ...
  • [x] Create a blog entry on blog.ipfs.tech
    using ./kuboreleaser release --version vX.Y.Z(-rcN) update-ipfs-blog --date YYYY-MM-DD or ...
    • [ ] create a PR which adds a release note for the new Kubo version
    • example
    • [ ] 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-branch or ...
    • [ ] create a new branch merge-release-vX.Y.Z from release
    • [ ] create and merge a PR from merge-release-vX.Y.Z to master
  • [x] Prepare for the next release
    using ./kuboreleaser release --version vX.Y.Z(-rcN) prepare-next or ...
    • [ ] 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 -u in root directory
    • [ ] run make mod_tidy
    • [ ] create a PR which updates go.mod and go.sum
    • [ ] add the PR to the next release milestone
  • [x] Close the release issue
  • lidel commented 1 month ago

    🎉 Kubo v0.30.0 is out!