-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
chore: New pipeline for v9 release #19783
Conversation
📊 Bundle size reportUnchanged fixtures
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 1f0d98b:
|
Asset size changesSize Auditor did not detect a change in bundle size for any component! Baseline commit: cd2dbd9378fe90d664169e15fc294f5843293c2b (build) |
Perf Analysis (
|
Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
---|---|---|---|---|---|
Avatar | mount | 892 | 890 | 5000 | |
BaseButton | mount | 960 | 962 | 5000 | |
Breadcrumb | mount | 2577 | 2578 | 1000 | |
ButtonNext | mount | 460 | 439 | 5000 | |
Checkbox | mount | 1585 | 1564 | 5000 | |
CheckboxBase | mount | 1351 | 1335 | 5000 | |
ChoiceGroup | mount | 5005 | 4968 | 5000 | |
ComboBox | mount | 984 | 991 | 1000 | |
CommandBar | mount | 10127 | 10137 | 1000 | |
ContextualMenu | mount | 6439 | 6460 | 1000 | |
DefaultButton | mount | 1197 | 1209 | 5000 | |
DetailsRow | mount | 3804 | 3856 | 5000 | |
DetailsRowFast | mount | 3902 | 3905 | 5000 | |
DetailsRowNoStyles | mount | 3709 | 3683 | 5000 | |
Dialog | mount | 2467 | 2472 | 1000 | |
DocumentCardTitle | mount | 136 | 146 | 1000 | |
Dropdown | mount | 3329 | 3316 | 5000 | |
FluentProviderNext | mount | 6902 | 7032 | 5000 | |
FluentProviderWithTheme | mount | 348 | 338 | 10 | |
FluentProviderWithTheme | virtual-rerender | 88 | 93 | 10 | |
FluentProviderWithTheme | virtual-rerender-with-unmount | 461 | 453 | 10 | |
FocusTrapZone | mount | 1776 | 1788 | 5000 | |
FocusZone | mount | 1742 | 1762 | 5000 | |
IconButton | mount | 1818 | 1848 | 5000 | |
Label | mount | 337 | 345 | 5000 | |
Layer | mount | 3088 | 3016 | 5000 | |
Link | mount | 464 | 477 | 5000 | |
MakeStyles | mount | 1728 | 1799 | 50000 | |
MenuButton | mount | 1545 | 1548 | 5000 | |
MessageBar | mount | 2011 | 2087 | 5000 | |
Nav | mount | 3363 | 3330 | 1000 | |
OverflowSet | mount | 1114 | 1156 | 5000 | |
Panel | mount | 2398 | 2413 | 1000 | |
Persona | mount | 869 | 830 | 1000 | |
Pivot | mount | 1465 | 1464 | 1000 | |
PrimaryButton | mount | 1326 | 1360 | 5000 | |
Rating | mount | 8063 | 8116 | 5000 | |
SearchBox | mount | 1418 | 1405 | 5000 | |
Shimmer | mount | 2703 | 2646 | 5000 | |
Slider | mount | 2028 | 2008 | 5000 | |
SpinButton | mount | 5104 | 5358 | 5000 | |
Spinner | mount | 409 | 414 | 5000 | |
SplitButton | mount | 3222 | 3325 | 5000 | |
Stack | mount | 528 | 526 | 5000 | |
StackWithIntrinsicChildren | mount | 1603 | 1654 | 5000 | |
StackWithTextChildren | mount | 4861 | 4877 | 5000 | |
SwatchColorPicker | mount | 10593 | 10591 | 5000 | |
Tabs | mount | 1440 | 1402 | 1000 | |
TagPicker | mount | 2670 | 2677 | 5000 | |
TeachingBubble | mount | 13193 | 13191 | 5000 | |
Text | mount | 429 | 427 | 5000 | |
TextField | mount | 1427 | 1407 | 5000 | |
ThemeProvider | mount | 1161 | 1195 | 5000 | |
ThemeProvider | virtual-rerender | 581 | 588 | 5000 | |
ThemeProvider | virtual-rerender-with-unmount | 1983 | 1974 | 5000 | |
Toggle | mount | 827 | 813 | 5000 | |
buttonNative | mount | 104 | 112 | 5000 |
Perf Analysis (@fluentui/react-northstar
)
Perf tests with no regressions
Scenario | Current PR Ticks | Baseline Ticks | Ratio |
---|---|---|---|
CarouselMinimalPerf.default | 517 | 458 | 1.13:1 |
HeaderMinimalPerf.default | 392 | 364 | 1.08:1 |
PortalMinimalPerf.default | 171 | 158 | 1.08:1 |
DividerMinimalPerf.default | 377 | 353 | 1.07:1 |
FlexMinimalPerf.default | 298 | 278 | 1.07:1 |
LayoutMinimalPerf.default | 386 | 360 | 1.07:1 |
BoxMinimalPerf.default | 367 | 345 | 1.06:1 |
DropdownManyItemsPerf.default | 724 | 686 | 1.06:1 |
GridMinimalPerf.default | 355 | 334 | 1.06:1 |
AnimationMinimalPerf.default | 424 | 404 | 1.05:1 |
StatusMinimalPerf.default | 719 | 688 | 1.05:1 |
TableMinimalPerf.default | 425 | 406 | 1.05:1 |
CardMinimalPerf.default | 589 | 568 | 1.04:1 |
ChatDuplicateMessagesPerf.default | 315 | 303 | 1.04:1 |
TreeMinimalPerf.default | 832 | 801 | 1.04:1 |
AttachmentMinimalPerf.default | 162 | 157 | 1.03:1 |
AvatarMinimalPerf.default | 212 | 206 | 1.03:1 |
ButtonMinimalPerf.default | 183 | 177 | 1.03:1 |
ButtonOverridesMissPerf.default | 1751 | 1708 | 1.03:1 |
ImageMinimalPerf.default | 391 | 379 | 1.03:1 |
LoaderMinimalPerf.default | 720 | 700 | 1.03:1 |
RefMinimalPerf.default | 237 | 229 | 1.03:1 |
TreeWith60ListItems.default | 189 | 183 | 1.03:1 |
AttachmentSlotsPerf.default | 1130 | 1108 | 1.02:1 |
ChatWithPopoverPerf.default | 383 | 374 | 1.02:1 |
CheckboxMinimalPerf.default | 2794 | 2747 | 1.02:1 |
DialogMinimalPerf.default | 766 | 754 | 1.02:1 |
DropdownMinimalPerf.default | 3108 | 3056 | 1.02:1 |
EmbedMinimalPerf.default | 4227 | 4160 | 1.02:1 |
FormMinimalPerf.default | 423 | 414 | 1.02:1 |
InputMinimalPerf.default | 1294 | 1266 | 1.02:1 |
PopupMinimalPerf.default | 608 | 597 | 1.02:1 |
RadioGroupMinimalPerf.default | 484 | 475 | 1.02:1 |
SegmentMinimalPerf.default | 372 | 366 | 1.02:1 |
TextMinimalPerf.default | 355 | 349 | 1.02:1 |
ToolbarMinimalPerf.default | 979 | 959 | 1.02:1 |
TooltipMinimalPerf.default | 1065 | 1040 | 1.02:1 |
HeaderSlotsPerf.default | 792 | 788 | 1.01:1 |
ListWith60ListItems.default | 674 | 667 | 1.01:1 |
MenuMinimalPerf.default | 870 | 861 | 1.01:1 |
MenuButtonMinimalPerf.default | 1700 | 1688 | 1.01:1 |
ReactionMinimalPerf.default | 392 | 387 | 1.01:1 |
SkeletonMinimalPerf.default | 364 | 361 | 1.01:1 |
SplitButtonMinimalPerf.default | 4331 | 4304 | 1.01:1 |
IconMinimalPerf.default | 654 | 645 | 1.01:1 |
TableManyItemsPerf.default | 2019 | 1997 | 1.01:1 |
ProviderMinimalPerf.default | 1034 | 1034 | 1:1 |
CustomToolbarPrototype.default | 3857 | 3860 | 1:1 |
VideoMinimalPerf.default | 679 | 677 | 1:1 |
ButtonSlotsPerf.default | 567 | 572 | 0.99:1 |
ChatMinimalPerf.default | 666 | 676 | 0.99:1 |
ListMinimalPerf.default | 533 | 537 | 0.99:1 |
TextAreaMinimalPerf.default | 537 | 540 | 0.99:1 |
DatepickerMinimalPerf.default | 5471 | 5562 | 0.98:1 |
ListCommonPerf.default | 651 | 663 | 0.98:1 |
AccordionMinimalPerf.default | 151 | 155 | 0.97:1 |
ItemLayoutMinimalPerf.default | 1285 | 1322 | 0.97:1 |
LabelMinimalPerf.default | 391 | 403 | 0.97:1 |
RosterPerf.default | 1220 | 1263 | 0.97:1 |
ProviderMergeThemesPerf.default | 1608 | 1659 | 0.97:1 |
ListNestedPerf.default | 566 | 591 | 0.96:1 |
SliderMinimalPerf.default | 1570 | 1635 | 0.96:1 |
AlertMinimalPerf.default | 291 | 310 | 0.94:1 |
The extra conformance test currently takes a direct depedendency on `@fluentui/react-conformance` to reuse types. This adds an unnecessary coupling between v8/9 areas and makes it harder to release the libraries separately. Since it is very unlikely to use the package without `react-conformance` package, moving this to dev deps
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally looking good, bunch of minor comments
scripts/beachball/getScopes.ts
Outdated
/** | ||
* Reads package info from the monorepo and generates the scopes for beachball bump and release | ||
* Differentiates between vNext and v8 releases | ||
* @returns Appropriate scoped packages for beachball |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be good to specify if this is a list of names, folders (absolute or relative), or what
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added more detail of what the scopes are (> 8.x)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually meant more in the sense of what type/format of strings are returned--maybe something like this
* @returns Appropriate scoped packages for beachball | |
* @returns Appropriate scoped packages, formatted for beachball's `scope` option |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah sorry about the confusion, this isn't a CLI option, but yeah I can add the equivalent CLI representation I guess
@@ -44,28 +44,6 @@ steps: | |||
yarn generate-version-files | |||
displayName: Generate version files | |||
|
|||
# The contents of this file is configured in the component governence tab of ADO |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OSSCELA has confirmed we don't need to actually include the NOTICE file in packages, running the enhanced license scans should be enough
export function getVNextPackagePaths(allPackageInfo: AllPackageInfo) { | ||
return Object.values(allPackageInfo) | ||
.map(packageInfo => { | ||
if (packageInfo.packageJson.version.startsWith('9.')) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just added this thing which might be useful https://github.com/microsoft/fluentui/blob/master/scripts/monorepo/isConvergedPackage.js
(it's a simple check but decided it might be worth centralizing in case we need to change it later or something? and makes it easier to find all the places checking "is this package converged")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a good callout, I'll use it in this PR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've made some modifications to the util to improve the typing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor comments (and I just made a merge conflict, sorry) but otherwise LGTM
!packagePathOrJson || typeof packagePathOrJson === 'string' | ||
? readConfig('package.json', packagePathOrJson) | ||
: packagePathOrJson; | ||
typeof packagePathOrJson === 'string' ? readConfig('package.json', packagePathOrJson) : packagePathOrJson; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing the !pathOrPackageJson
broke the default case where it reads from process.cwd()
, which broke building converged packages in codesandbox. I'll make a PR to fix it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* experiment with new pipeline * use beachball scopes as config * remove generate version file * remove some steps * use yarn instead of npm * fix northstar scope * update yml * refactor(react-conformance-make-styles): react-conformance as dev deps The extra conformance test currently takes a direct depedendency on `@fluentui/react-conformance` to reuse types. This adds an unnecessary coupling between v8/9 areas and makes it harder to release the libraries separately. Since it is very unlikely to use the package without `react-conformance` package, moving this to dev deps * Change files * update md * move react-conformance to devdeps * fix scopes * update current release script * add PR comment for ts-ignore * clean up beachball config * remove hard coded paths * refactor global scope var * improve type * add docstring * use runPublished * filter scopes * PR suggestions * add TODO * use token in pipeline * remove CG * clean up runPublished * update docstring
Pull request checklist
$ yarn change
Description of changes
Creates a new release pipeline for v9.
In order to force beachball to separate the releases, the PR modifies the beachball config to generate scopes based on the presence of an environment variable
RELEASE_VNEXT
which is always present in the new pipeline. Thescope
option in the config does not exist in the beachball types, but will be fixed in microsoft/beachball#599.The new default release scope includes the previous scope (exclude all northstar folders) as well as all v9 packages.
In the new v9 scope
vr-tests
andperf-test
packages are kept in the scope since they use v9 components as dependencies. Releasing v9 will bump the versions in those packages to stop syncpack from throwing errors.Focus areas to test
(optional)