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

[WIP] Lotus Release v1.28.0 #12109

Closed
54 of 55 tasks
Tracked by #11939
rjan90 opened this issue Jun 18, 2024 · 15 comments
Closed
54 of 55 tasks
Tracked by #11939

[WIP] Lotus Release v1.28.0 #12109

rjan90 opened this issue Jun 18, 2024 · 15 comments
Assignees

Comments

@rjan90
Copy link
Contributor

rjan90 commented Jun 18, 2024

🚢 Estimated shipping date

Dependencies for releases

This is the set of changes that need to make it a given RC. This is effectively the set of changes to cherry-pick from master.

RC1

RC2 (current "calibration final-candidate")

Mainnet Upgrade Release

✅ Release Checklist

  • Wait for the v1.27.1 release to complete: [Shipped] Lotus Client Release v1.27.1 #12073
  • Fork a new branch (release/v1.28.0) from master.
    • Any further release related changes need to be made in this branch or cherry-picked to it.
    • If any "non-trivial" changes get added to the release, uncheck all the checkboxes and return to this stage.
  • (After the RC gets cut) Bump the version in build/version.go in the master branch to vX.Y.(Z+1)-dev (bump from feature release) or vX.(Y+1).0-dev (bump from mandatory release). Run make gen and make docsgen-cli before committing changes
    chore: bump version in master #12074

Prepping an RC

RC prep steps for network upgrade for Calibration

RC1 Steps

  • version string in build/version.go needs to be updated to end with '-rcX' (in the release/vX.Y.Z branch)
  • run make gen && make docsgen-cli
  • Changelog prep
    • Generate changelog using the script at scripts/mkreleaselog
    • Add contents of generated text to lotus/CHANGELOG.md
    • Editorializing (FIPs, actor bundles, new feature callouts - example)
  • Commit using PR: chore: release: Lotus v1.28.0-rc1 #12169
  • tag commit with vX.Y.Z-rcN
  • cut a pre-release here

We've cut the first RC using these steps at https://github.com/filecoin-project/lotus/releases/tag/v1.28.0-rc1.

RC2 Steps

  • version string in build/version.go needs to be updated to end with '-rcX' (in the release/vX.Y.Z branch)
  • run make gen && make docsgen-cli
  • Changelog prep
    • Generate changelog using the script at scripts/mkreleaselog
    • Add contents of generated text to lotus/CHANGELOG.md
    • Editorializing (FIPs, actor bundles, new feature callouts - example)
  • Commit using PR
  • tag commit with vX.Y.Z-rcN
  • cut a pre-release here

Stable Release

  • Final preparation
    • Verify that version string in version.go has been updated.
    • Verify that codegen is up to date (make gen && make docsgen-cli)
    • Ensure that CHANGELOG.md is up to date
    • Merge release-vX.Y.Z into the releases branch.
    • Tag this merge commit (on the releases branch) with vX.Y.Z
    • Cut the release here.

Post-Release

  • Merge the releases branch back into master, ignoring the changes to version.go (keep the -dev version from master). Do NOT delete the releases branch when doing so!
    • Double check that everything in releases and release/v1.28.0 are in master.
  • Update RELEASE_ISSUE_TEMPLATE.md with any improvements determined from this latest release iteration.
  • Create an issue using RELEASE_ISSUE_TEMPLATE.md for the next release.
@rjan90
Copy link
Contributor Author

rjan90 commented Jun 18, 2024

@aarshkshah1992 I have added some steps for pulling in all the needed dependencies for a network upgrade Lotus-version here: #12107

A couple of notes:

  • The Lotus v1.28.0-rc1 should be based on the last stable Lotus version out.
  • The upgrade epoch for the Calibration network has been alligned on here
    • You need to update this in the build/params_calibnet.go file

@BigLep BigLep pinned this issue Jun 20, 2024
@BigLep
Copy link
Member

BigLep commented Jun 20, 2024

(expanding comment) Tracker of things that were done that weren't in the release issue template or other observations and lessons learned:

  • Step for updating Lotus dependencies per chore: docs: Add initial Update_Dependencies_Lotus.md #12107
  • Step for setting the upgrade epoch for the Calibration network
  • Adjusted the template to make clear that we cut release branch from master.
  • Added section to issue template to make clear the issues/PRs we need to wait on for a given PR
  • Broke out the changelog steps more extensively and gave an example.
  • Made clear that we update master's build/version.go once RC1 is released

@BigLep
Copy link
Member

BigLep commented Jun 24, 2024

It's currently TBD whether this release will be cut from master or from releases (tracking 1.27.1).

We will have to cherry pick some changes from master regardless, so it would be logistically simpler to cut the branch from master. @aarshkshah1992 is going to do due-diligence on 2024-06-25 looking at master...release/v1.27.1 to see if there's anything like events db migrations or anything else calling out for a mandatory release version.

We’ll then update the text in issue description based on the decision.

Note that until the release/v1.28.0 branch is cut, we should only merge changes relevant for nv23.

(related #fil-lotus-dev thread)

@BigLep
Copy link
Member

BigLep commented Jun 24, 2024

For anyone watching, we have confirmed we are still targeting RC1 for Thursday, 2024-06-27.

@jennijuju
Copy link
Member

jennijuju commented Jun 24, 2024

fwiw i did a quick pass on master...jen/v1271prep and i think we can cut off base on master commit 7141847 + other nv23 must have PRs

@BigLep
Copy link
Member

BigLep commented Jun 25, 2024

@aarshkshah1992 @jennijuju : I think we should use this github issue to track the code specifics for Lotus v1.28.0.

As a result, I added tracking to the issue for things we're waiting on for RC1 and RC2.

@BigLep
Copy link
Member

BigLep commented Jun 28, 2024

RC1 is now scheduled for 2024-07-01. Here is the relevant slack thread: https://filecoinproject.slack.com/archives/CP50PPW2X/p171952803942240 . (Issue description was updated too.)

@masih
Copy link
Member

masih commented Jun 28, 2024

Re #12119 review comments addressed.

@BigLep
Copy link
Member

BigLep commented Jul 23, 2024

For anyone watching this issue about the 1.28.0 final release, it will not be happening today (2024-07-23). It's expected to come 2024-07-24. The PR for the release is #12271, which lists the remaining work item (0.0.5 release of go-f3).

@rjan90
Copy link
Contributor Author

rjan90 commented Jul 24, 2024

  • Merge release-vX.Y.Z into the releases branch.
  • Tag this merge commit (on the releases branch) with vX.Y.Z

I was unable to resolve conflicts, and failing test when trying to merge the release/v1.28.0 branch into the releases branch (Attempt 2 from Aarsh: #12291) in such as way that we would be able to tag the v1.28.0 release from the releases branch. This is partly because some of the automation code has landed in the releases branch, when we tested shipping the automatic releases with the v1.27.2 release.

I will go ahead and tag the v1.28.0 release, from the release/v1.280 branch, and in the interim get the releases branch to point to the v1.28.0 tag, so that people which depend on git checkout releases as part of their script/upgrade process, will get the correct version.

@BigLep
Copy link
Member

BigLep commented Jul 24, 2024

For visibility, there have been active verbal discussions about how to handle the fact that the 1.28.0 tag is from the release/v1.28.0 branch rather than releases. I'll post the notes within an hour.

@BigLep
Copy link
Member

BigLep commented Jul 24, 2024

For context, my understanding is that the historical release process has been to tag from releases and to cut patch releases (e.g., 1.28.1) from the releases branch. I don't know all the reasons why the releases branch was created, but I assume it is being used by some users or automation as the defacto branch to pull the latest non-RC released code to build from source.

@rjan90 understandably ran into some issues when attempting to merge the release/v1.28.0 into the releases branch. As @rjan90 shared, this is in part due to some release automation that we wanted to try out with a real release (1.27.2 in this case).

I think we have two paths forward:

  1. Maintain the previous commitment of releases having the latest final release. To do this, given there are commits in releases from 1.27.2 that we don't want as part of 1.28.x (i.e., release automation changeups), I think the cleanest thing is to revert releases to the pre-1.27.2 state (i.e., make the head of releases be 1.27.1). Looking at https://github.com/filecoin-project/lotus/commits/releases, this would mean reverting the commits to get us back to the 2024-06-24 (commit 36d9634). We then merge in releases/v1.28.0 into releases.
  2. Introduce the deprecation/abandonment of the releases today. This is effectively fast-tracking something that maintainers were planning to do post-nv23 anyways as part of Revised Lotus Client Versioning #12072 . This would mean 1.28.x patches (e.g., 1.28.1) would be made off the current release/v1.28.0 branch. It also means anyone relying on releases to follow final releases would need to update to instead track the release/v1.28.0 branch (and its decedents).

Given we're a couple of weeks away from network upgrade, I don't think we should introduce more process changes, and I would vote to go with option 1 to maintain the status quo.

Regardless of what path is taken, there is still the exercise of confirming that there are no changes in the releases branch that should make their way into release/v1.28.0. @aarshkshah1992, @jennijuju, and I took an hour or so to comb through the differences. This was done in a couple of ways:

  1. Manually looking at the commits in https://github.com/filecoin-project/lotus/commits/releases and https://github.com/filecoin-project/lotus/commits/release/v1.28.0
  2. Diffing the commit title differences the two branches with a command like colordiff <(git log --pretty=format:"%s" release/v1.28.0..releases | sort) <(git log --pretty=format:"%s" releases..release/v1.28.0 | sort)

We couldn't find any instance of a commit that was in releases that should have been in release/v1.28.0. The cases where there were commits that were in releases that weren't in release/v1.28.0 boiled down to:

  1. Release automation items (discussed above)
  2. Dependency updates that were eclipsed by even higher dependency upgrades

(And yes, I'm sure there is a better "git fu" way of answering the questions of "are there any meaningful commits in branch X that aren't in branch Y - feedback/pointers welcome.)


Diff comparing releases commits to releave/v1.28.0 commits using the `colordiff` command above
�[0;36m1,23c1,6�[0;0m
�[0;31m< Add Lotus-Miner / Curio related changes�[0;0m
�[0;31m< Bump NodeBuildVersion to v1.27.1-rc1�[0;0m
�[0;31m< Bump pubsub-dep�[0;0m
�[0;31m< Bump version - make gen/make docsgen�[0;0m
�[0;31m< Make gen / make docsgen-cli�[0;0m
�[0;31m< Merge branch 'release/v1.27.1' into jen/v1271prep�[0;0m
�[0;31m< Merge branch 'releases' into resolve-releasev1270-conflicts�[0;0m
�[0;31m< Merge pull request #11972 from filecoin-project/prep-v1270-rc2�[0;0m
�[0;31m< Merge pull request #12003 from filecoin-project/backports-rc3�[0;0m
�[0;31m< Merge pull request #12039 from filecoin-project/pre-final-v1270�[0;0m
�[0;31m< Merge pull request #12058 from filecoin-project/resolve-releasev1270-conflicts�[0;0m
�[0;31m< Merge pull request #12077 from filecoin-project/prep-v1271-rc1�[0;0m
�[0;31m< Merge pull request #12115 from filecoin-project/jen/changlog�[0;0m
�[0;31m< Merge pull request #12117 from filecoin-project/phi/v1271-rc2�[0;0m
�[0;31m< Merge pull request #12125 from filecoin-project/jen/v1273�[0;0m
�[0;31m< Merge pull request #12137 from filecoin-project/jen/v1271final�[0;0m
�[0;31m< Merge pull request #12138 from filecoin-project/jen/v1271prep�[0;0m
�[0;31m< Merge pull request #12140 from filecoin-project/rvagg/changelog-note-events-db�[0;0m
�[0;31m< Merge pull request #12250 from filecoin-project/release/v1.27.2�[0;0m
�[0;31m< Prep v1.27.0-rc2�[0;0m
�[0;31m< Typo fixes, and more changelog updates�[0;0m
�[0;31m< Update CHANGELOG.md�[0;0m
�[0;31m< Update CHANGELOG.md�[0;0m
�[0;0m---�[0;0m
�[0;32m> Apply suggestions from code review�[0;0m
�[0;32m> Apply suggestions from code review�[0;0m
�[0;32m> Merge pull request #12147 from filecoin-project/chore/nv23-v1.28.0-backport�[0;0m
�[0;32m> Merge pull request #12149 from filecoin-project/jen/butterflyinit�[0;0m
�[0;32m> Merge pull request #12169 from filecoin-project/aarshkshah1992/update-lotus-version-v128�[0;0m
�[0;32m> Rough draft (#12139)�[0;0m
�[0;36m25,37c8,17�[0;0m
�[0;31m< Update changelog�[0;0m
�[0;31m< Update changelog�[0;0m
�[0;31m< Update changelog�[0;0m
�[0;31m< Update changelog�[0;0m
�[0;31m< Update changelog�[0;0m
�[0;31m< Update changelog / make docsgen�[0;0m
�[0;31m< Update changelog and version�[0;0m
�[0;31m< Update changelog to RC2�[0;0m
�[0;31m< Update date and upgrade warnings�[0;0m
�[0;31m< add ETH addrs API to Gateway (#11979)�[0;0m
�[0;31m< address review - resolve one more conflicts - revert 2 new line added�[0;0m
�[0;31m< build: release: v1.27.0-rc1 (#11947)�[0;0m
�[0;31m< build: release: v1.27.1-rc2 (#12101)�[0;0m
�[0;0m---�[0;0m
�[0;32m> Update codename for NV23 (#12104)�[0;0m
�[0;32m> add backport PR�[0;0m
�[0;32m> build release�[0;0m
�[0;32m> build: release: v1.28.0 (#12271)�[0;0m
�[0;32m> build: release: v1.28.0-rc2 (#12179)�[0;0m
�[0;32m> build: release: v1.28.0-rc3 (#12186)�[0;0m
�[0;32m> build: release: v1.28.0-rc4 (#12190)�[0;0m
�[0;32m> changelog�[0;0m
�[0;32m> chore: actors: pull in the latest v14 bundles�[0;0m
�[0;32m> chore: actors: update to builtin-actors@v14.0.0-rc.1�[0;0m
�[0;36m39,40c19�[0;0m
�[0;31m< chore: backport #12054 to release/v1.27.0 branch (#12056)�[0;0m
�[0;31m< chore: ci: allow using pat for tag creation during release�[0;0m
�[0;0m---�[0;0m
�[0;32m> chore: bump version in master (#12074)�[0;0m
�[0;36m41a21,22�[0;0m
�[0;32m> chore: ci: use self-hosted runners in the original repo or any fork inside the filecoin-project org (#12134)�[0;0m
�[0;32m> chore: curio: remove forgotten parts of curio config (#12087)�[0;0m
�[0;36m42a24�[0;0m
�[0;32m> chore: deps: prep for upstream removing ConstructNilRouting()�[0;0m
�[0;36m44,49c26,31�[0;0m
�[0;31m< chore: deps: upgrade to libp2p@v0.35.3 from v0.34.1�[0;0m
�[0;31m< chore: libp2p: update to v0.34.1 (#12027)�[0;0m
�[0;31m< chore: lint: address feedback from reviews�[0;0m
�[0;31m< chore: lint: fix lint errors with new linting config�[0;0m
�[0;31m< chore: lint: update golangci lint config�[0;0m
�[0;31m< chore: remove unmaintained bootstrappers (#11983)�[0;0m
�[0;0m---�[0;0m
�[0;32m> chore: deps: update ffi and go-state-types for NV23 (#12156)�[0;0m
�[0;32m> chore: deps: upgrade to go-state-types@v0.14.0-rc2�[0;0m
�[0;32m> chore: docs: add changelog upgrade warning for events db migration (#12145)�[0;0m
�[0;32m> chore: docs: remove unused badge from the README (#12097)�[0;0m
�[0;32m> chore: merge releases back to master (v1.27.1) (#12141)�[0;0m
�[0;32m> chore: test: refactor, fix and improve unmanaged miner (#12143)�[0;0m
�[0;36m51,58c33,35�[0;0m
�[0;31m< chore: update drand (#12021)�[0;0m
�[0;31m< chore: update go-data-transfer and go-graphsync�[0;0m
�[0;31m< ci: deprecate circle ci in favour of github actions (#11786)�[0;0m
�[0;31m< doc: eth: restore comment lost in linter cleanup�[0;0m
�[0;31m< doc: events: note events db migration impact�[0;0m
�[0;31m< docs: lotus v1.27.2 prep�[0;0m
�[0;31m< docs: lotus v1.27.2-rc1 prep�[0;0m
�[0;31m< docs: lotus v1.27.2-rc2 prep�[0;0m
�[0;0m---�[0;0m
�[0;32m> docs: changelog: fix link syntax (#12085)�[0;0m
�[0;32m> docs:Building_a_network_skeleton.md cleanups (#12079)�[0;0m
�[0;32m> feat!: ni-porep for lotus-bench�[0;0m
�[0;36m60,61c37�[0;0m
�[0;31m< feat: ci: automate the new release process�[0;0m
�[0;31m< feat: ci: remove gorelease, create drafts and automate release notes�[0;0m
�[0;0m---�[0;0m
�[0;32m> feat: ec: Integrate Fast Finality for Filecoin (#12119)�[0;0m
�[0;36m63,64c39,46�[0;0m
�[0;31m< feat: libp2p: Lotus stream cleanup (#11993)�[0;0m
�[0;31m< fix go releaser and test with rc3�[0;0m
�[0;0m---�[0;0m
�[0;32m> feat: itest: minor UnmanagedMiner refactor for reusability and simplicity�[0;0m
�[0;32m> feat: lotus-bench: add script to benchmark standard sector steps�[0;0m
�[0;32m> feat: niporep: introduce SealProofVariant�[0;0m
�[0;32m> feat: test: add LOTUS_RUN_VERY_EXPENSIVE_TESTS and include niporep real-proofs�[0;0m
�[0;32m> feat:ec: integrate F3 dynamic manifest (#12173) (#12185)�[0;0m
�[0;32m> final changes�[0;0m
�[0;32m> finish changelog�[0;0m
�[0;32m> fix typos�[0;0m
�[0;36m65a48�[0;0m
�[0;32m> fix: ETH getLogs: fix slowness at head and ignore null blocks (#12207)�[0;0m
�[0;36m66a50,51�[0;0m
�[0;32m> fix: build: pdate UpgradePhoenixHeight to -26 in inteop (#12106)�[0;0m
�[0;32m> fix: ci: bump manual onboarding test to 4xlarge�[0;0m
�[0;36m68c53,54�[0;0m
�[0;31m< fix: copy Flags field from SectorOnChainInfo�[0;0m
�[0;0m---�[0;0m
�[0;32m> fix: ci: post sorted pr checks comments under PRs from forks�[0;0m
�[0;32m> fix: ci: update concurrency group settings of the sorted pr checks workflow�[0;0m
�[0;36m70a57,60�[0;0m
�[0;32m> fix: fevm: update tests for latest actors bundle (#12144)�[0;0m
�[0;32m> fix: genesis preseal: get it working�[0;0m
�[0;32m> fix: itest: fix wdpost proving epoch calculation�[0;0m
�[0;32m> fix: niporep: unflake provecommit failure for niporep�[0;0m
�[0;36m72,76c62,72�[0;0m
�[0;31m< go mod tidy�[0;0m
�[0;31m< lotus v1.27.1 prep�[0;0m
�[0;31m< release: v1.26.3 (#11908) (#11915)�[0;0m
�[0;31m< revert go version change (#12050)�[0;0m
�[0;31m< small fix in changelog�[0;0m
�[0;0m---�[0;0m
�[0;32m> fix: state: rename Actor.Address and only use it for f4 addresses (#12155)�[0;0m
�[0;32m> nv23 deps (#12129)�[0;0m
�[0;32m> only soft laungh�[0;0m
�[0;32m> run CI�[0;0m
�[0;32m> soft launch�[0;0m
�[0;32m> test: niporep: initial niporep e2e test�[0;0m
�[0;32m> update CL�[0;0m
�[0;32m> update genesis network version for dev testnets�[0;0m
�[0;32m> update go state types�[0;0m
�[0;32m> update go-state-types (#12154)�[0;0m
�[0;32m> update version string�[0;0m

@BigLep
Copy link
Member

BigLep commented Jul 24, 2024

Per verbal, we are going to go with option 1 above. @rvagg is going to work on this PR. (I also updated the text to better clarify what is meant by "option 1").

@rvagg rvagg mentioned this issue Jul 24, 2024
8 tasks
@rvagg
Copy link
Member

rvagg commented Jul 24, 2024

#12299

@rjan90
Copy link
Contributor Author

rjan90 commented Jul 29, 2024

Closing this now that https://github.com/filecoin-project/lotus/releases/tag/v1.28.1 has been published, and also the final step of merging releases branch back to master has been merged #12317

@rjan90 rjan90 closed this as completed Jul 29, 2024
@rjan90 rjan90 unpinned this issue Jul 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ⌨️In Progress
Development

No branches or pull requests

6 participants