-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
[DX Streamline] Lotus node-only release process #12010
Comments
Outstanding question: all components use api/version.go to determine their build version, should we separate this out to have the daemon using a different version number. If we tie them together, even if we only release a daemon binary, that tag would give you a compile of lotus-miner that has the same version, yet it may not be something we really want people to compile and use because. Maybe we need a separate file for both. |
Yes, using something like a Alternatively, we could use something like a changelog driven release process. We do that successfully for releasing all the GitHub Actions that we maintain. In that setup, the information about the current version is retrieved from the CHANGELOG.md. Markdowns are a little bit trickier to parse, but the advantage is that you only have to update the file that you're looking at anyway during the release. We did a write-up on that not too long ago - https://www.ipdx.co/articles/guides-articles/ipdx-recipe-how-we-saved-time-and-mental-overhead-with-changelog-driven-releases With lotus and lotus-miner following separate release cycle, we could store multiple entries in the The other question that I think needs answering is how to handle tagging with lotus and lotus-miner following separate release cycles but still live in the same repository. I think it'd be quite dangerous not to have both released for each tag. One option that comes to mind to work around this is to use prefix |
Continuing the discussion from #12035 (comment)
So, I think we're down to a remaining question of how to trigger a release: I've proposed version.go as the signalling mechanism in #12035 - open a PR changing version and it goes through the steps to prepare a release. The alternative proposed here is updating the CHANGELOG, which I imagine will also bump version.go automatically if it detects a new version header. @rjan90 I think this might be a question for you - do you have any thoughts or preferences for how to trigger a release? If you got a branch all ready for a release and just opened a final PR, or added a final commit to a PR, what would you like it to be to get CI to recognise that you want to start the release process and then upon merge have it perform the actual release steps? |
I believe the proposed mechanism of signaling a release through a change in version.go makes the most sense. It is straightforward and simple, making it an effective way to trigger the release process. |
SGTM. & lotus version and miner version should be decoupled as well |
Sounds great :) We'll get started on setting up the automatic release triggering based on changes to |
I think the two remaining tasks, before this can be closed is:
|
As confirmed on Slack, the ETA on preparing the setup is next week the latest. |
@rjan90 : what's remaining before we can close this? Should we maybe move the checklist in #12010 (comment) up to the issue description? I assume "Publish a succsseful Lotus release with the automatic release triggering" should become two tasks: one for "Lotus Node" and one for "Lotus Miner". |
I believe both were accomplished now, Lotus Node and Lotus Miner 🎉 |
Closing this ticket as completed. |
Current workflow runs
make deps lotus lotus-miner lotus-worker
and GoReleaser config bundles the 3 binaries into a single tgz for uploading to the release page.We need a streamlined way to produce
lotus
-only releases. Possibly using some variation of the IPDXversion.json
tooling (e.g.) such that it simplifies some or all of the steps outlined in the release flow checklist.e.g. A pull request changing
build/version.go
will trigger other actions in that release flow, including setting up a draft release page, generating a basic changelog, running gen and docsgen-cli etc. When the PR is closed, it's tagged and a release is published. Somewhere in there, a flag that says "lotus-only", or the inverse, should indicate whether to include the additional components.e.g. Alternatively, just work within the current process but add optionality to GoReleaser and release.yml that can switch between two modes with a simple flag from somewhere.
The text was updated successfully, but these errors were encountered: