[WIP] Lotus Release v1.28.0
rjan90 opened this issue · 15 comments
🚢 Estimated shipping date
-
RC1:
2024-06-27 (last confirmed 2024-06-24T18:44:46Z)- 2024-07-01 (updated on 2024-06-28T03:58:09Z - slack thread)
-
RC2:
-
RC3:
-
RC4:
-
RC5:
-
v1.28.0 stable estimated:
2024-07-242024-07-23
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")
- #12165 (CONFIRMED TO WORK ON BUTTERFLY)
- #12160
- #12135
- Set upgrade epoch on Calibration
- Update upgrade warning section to warn about:
This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details.
- Backport: #12177
- Backport: #12175
- Backport: #12176
- Backport: #12181
Mainnet Upgrade Release
- Backport everything with the backport label (and then remove the backport labe)
- ~ libp2p/go-libp2p#2858 ~ (We have bumped go-libp2p. Will close issue once we have a bit more confidence after people have upgraded)
- filecoin-project/go-f3#386
- Dependency updates
✅ Release Checklist
- Wait for the v1.27.1 release to complete: #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 themaster
branch tovX.Y.(Z+1)-dev
(bump from feature release) orvX.(Y+1).0-dev
(bump from mandatory release). Run make gen and make docsgen-cli before committing changes
#12074
Prepping an RC
RC prep steps for network upgrade for Calibration
- Update Lotus dependencies following #12107
- Set the upgrade epoch for the Calibration network
RC1 Steps
- version string in
build/version.go
needs to be updated to end with '-rcX' (in therelease/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: #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 therelease/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 thereleases
branch. - Tag this merge commit (on the
releases
branch) withvX.Y.Z
- Cut the release here.
- Verify that version string in
Post-Release
- Merge the
releases
branch back intomaster
, ignoring the changes toversion.go
(keep the-dev
version from master). Do NOT delete thereleases
branch when doing so!- Double check that everything in
releases
andrelease/v1.28.0
are in master.
- Double check that everything in
- 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.
@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
- You need to update this in the
(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 #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
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)
For anyone watching, we have confirmed we are still targeting RC1 for Thursday, 2024-06-27.
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
@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.
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.)
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).
- 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.
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.
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:
- Maintain the previous commitment of
releases
having the latest final release. To do this, given there are commits inreleases
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 revertreleases
to the pre-1.27.2 state (i.e., make the head ofreleases
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 inreleases/v1.28.0
intoreleases
. - 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 #12072 . This would mean 1.28.x patches (e.g., 1.28.1) would be made off the currentrelease/v1.28.0
branch. It also means anyone relying onreleases
to follow final releases would need to update to instead track therelease/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:
- 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
- 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:
- Release automation items (discussed above)
- 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
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").
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