-
Notifications
You must be signed in to change notification settings - Fork 601
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
Improved releases with Beachball #3889
Comments
Two things I wanted to note:
|
Great questions, thoughts/answers below:
Fluent has a fairly straight forward PR template which calls it out, and I think that helps as well:
I believe there is also a The other bit is that if a change file is missing, it's fairly easy to run it again locally, commit that file, and push the changes. If there is no file, we can either choose to always require one, or we can treat it just like a chore. No changelog message will be created and no publish will take place if that's the only change. The one thing this does require is for collaborators and codeowners to know 2 things:
That's a fairly low bar to be honest, and it really only requires us to do that which we've already committed to - be thorough in our reviews :). A massive benefit in my opinion, is that we no longer need to police actual commit messages or github PR titles.
I agree on this, but I think it's going to require some investigation on our part. My recommendation here would be a staged approach. First, swap beachball for publishing. Second, setup the nightly automated release. |
Sounds good. |
The #### Pull request checklist
- [ ] Addresses an existing issue: Fixes #0000
- [ ] Include a change request file using `$ yarn change` So at least contributors will think about it before contributing. |
I'm about to revamp all our issue and PR templates, so I'll make sure we've got this in the new versions. Thanks @dzearing 😄 |
@EisenbergEffect good news - @kenotron just enabled canary builds with Beachball here microsoft/beachball#406 !!! Thanks @kenotron, what timing! |
Blocked awaiting Beachball's Metadata feature to fully support how we'd want to use beachball. |
#4018 implements plumbing in PR 2 of 2 in preparation for new beachball feature. Once this goes in, final testing and configuration would need performed to verify. Then metadata could be implemented as a final step when the feature is available. |
Let's not close until we get #4018 merged. |
This work has been completed. The additional 'metadata' work will be completed during #4626 work in the future. |
Overview
This spec proposes a new workflow for publishing and the addition of "Beachball", a new package to manage semantic versioning, changelogs, and releases. This work is to help coordinate with a larger plan of releases being addressed by @awentzel with #3872.
Background
Currently, we use Lerna for all things related to package publishing using the conventional commits flag. Currently all of our publishing is manual and is scheduled on a regular cadence of every other week. Lerna uses the commit message, which in some cases is either the commit message itself, or the Github pull request title. The inconsistency here is just one of several issues which have created headaches. We've talked quite a bit in the past around improved changelogs, better control over changelog messages, automated releases, wiring up to Github releases, and other improvements. Beachball will not only meet our requirements but add additional functionality, more control, and improved workflow.
Non-goals
This work is not intended as a wholesale replacement for Lerna.
Dev Workflow
Using Beachball
In most cases, a single PR would address a single change and include a single file. The workflow for that would look as follows:
yarn change
to generate a change fileSometimes, additional changes may be needed to introduce new features. Those may require changes to other packages which would necessitate a changelog entry. Beachball handles this with ease and multiple change files can be included to handle scenarios like this.
yarn change
workflowWhen
yarn change
is run, the following processes run within the users terminal:Example change file:
Helpful links:
Publishing via CI
Per Beachballs documentation:
When publish is called, the following three things will happen:
Publishing steps
By publishing, Beachball performs the following tasks:
Automated nightly publish
As part of this implementation, I would propose that we incorporate to a nightly publish using Beachball. By automating a nightly publish, we can provide quicker turnarounds for bug fixes and features with a regular rhythm without disrupting anyone's workflow to hold for publishing. Additionally, contributors and consumers of FAST know exactly when they can expect the changes to be published.
I think a key benefit here would be a removal on the "rush" to get things in for a release. The fact that changes can publish the evening it goes in means that there's not a negative consequence of waiting an extra day or two to ensure that we've validated a given control or feature.
Perform as a separate work issue, post Beachball Implementation
Connecting to Github Releases
While Beachball doesn't natively integrate with Github releases, the Fluent UI team has created some scripts to facilitate this integration. That implementation could be leveraged in part or in whole to replicate the functionality.
Linking the release version to a Pull Request
There is a bot provided to teams at Microsoft of OSS projects which supports things like tagging releases in PR's and hooking other automation in. I've reached out to the team and inquired about the onboarding process so we can launch that in coordination with the nightly releases.
The text was updated successfully, but these errors were encountered: