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

chore: New pipeline for v9 release #19783

Merged
merged 34 commits into from
Sep 21, 2021
Merged

chore: New pipeline for v9 release #19783

merged 34 commits into from
Sep 21, 2021

Conversation

ling1726
Copy link
Member

@ling1726 ling1726 commented Sep 14, 2021

Pull request checklist

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. The scope 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 and perf-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)

@fabricteam
Copy link
Collaborator

fabricteam commented Sep 14, 2021

📊 Bundle size report

Unchanged fixtures
Package & Exports Size (minified/GZIP)
react-accordion
Accordion (including children components)
55.248 kB
17.403 kB
react-avatar
Avatar
56.558 kB
15.66 kB
react-badge
Badge
24.343 kB
7.165 kB
react-badge
CounterBadge
27.156 kB
7.851 kB
react-badge
PresenseBadge
237 B
177 B
react-button
Button
22.932 kB
6.984 kB
react-button
CompoundButton
28.215 kB
7.834 kB
react-button
MenuButton
24.784 kB
7.569 kB
react-button
Button
30.537 kB
8.796 kB
react-button
ToggleButton
32.527 kB
7.601 kB
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
164.296 kB
46.863 kB
react-components
react-components: FluentProvider & webLightTheme
35.754 kB
11.393 kB
react-divider
Divider
15.889 kB
5.747 kB
react-image
Image
9.804 kB
3.942 kB
react-input
Input
31.636 kB
11.312 kB
react-label
Label
9.397 kB
3.839 kB
react-link
Link
11.633 kB
4.582 kB
react-make-styles
makeStaticStyles (runtime)
7.59 kB
3.321 kB
react-make-styles
makeStyles + mergeClasses (runtime)
22.135 kB
8.356 kB
react-make-styles
makeStyles + mergeClasses (build time)
2.557 kB
1.202 kB
react-menu
Menu (including children components)
103.402 kB
31.415 kB
react-menu
Menu (including selectable components)
105.678 kB
31.769 kB
react-popover
Popover
100.411 kB
30.075 kB
react-portal
Portal
6.725 kB
2.237 kB
react-positioning
usePopper
23.145 kB
7.942 kB
react-provider
FluentProvider
15.748 kB
5.773 kB
react-slider
Slider
32.056 kB
10.087 kB
react-switch
Switch
18.816 kB
6.277 kB
react-text
Text - Default
11.798 kB
4.452 kB
react-text
Text - Wrappers
15.414 kB
4.734 kB
react-theme
Teams: all themes
32.945 kB
6.677 kB
react-theme
Teams: Light theme
20.251 kB
5.665 kB
react-tooltip
Tooltip
46.02 kB
15.663 kB
react-utilities
SSRProvider
213 B
170 B
🤖 This report was generated against 0d0928e1fe674b549762233d9e5f426eef831d32

@codesandbox-ci
Copy link

codesandbox-ci bot commented Sep 14, 2021

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:

Sandbox Source
@fluentui/react 8 starter Configuration

@size-auditor
Copy link

size-auditor bot commented Sep 14, 2021

Asset size changes

Size Auditor did not detect a change in bundle size for any component!

Baseline commit: cd2dbd9378fe90d664169e15fc294f5843293c2b (build)

@fabricteam
Copy link
Collaborator

fabricteam commented Sep 14, 2021

Perf Analysis (@fluentui/react)

No significant results to display.

All results

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

@ling1726 ling1726 changed the title Chore/separate v9 release chore: New pipeline for v9 release Sep 20, 2021
@ling1726 ling1726 marked this pull request as ready for review September 20, 2021 09:52
@ling1726 ling1726 requested a review from a team as a code owner September 20, 2021 09:52
Copy link
Member

@ecraig12345 ecraig12345 left a 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

azure-pipelines.release-vnext.yml Show resolved Hide resolved
package.json Outdated Show resolved Hide resolved
scripts/beachball/getScopes.ts Outdated Show resolved Hide resolved
/**
* 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
Copy link
Member

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

Copy link
Member Author

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)

Copy link
Member

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

Suggested change
* @returns Appropriate scoped packages for beachball
* @returns Appropriate scoped packages, formatted for beachball's `scope` option

Copy link
Member Author

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

scripts/beachball/getVNextChangelogGroups.ts Outdated Show resolved Hide resolved
scripts/beachball/getVNextChangelogGroups.ts Outdated Show resolved Hide resolved
scripts/beachball/index.ts Outdated Show resolved Hide resolved
azure-pipelines.release-vnext.yml Outdated Show resolved Hide resolved
@@ -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
Copy link
Member Author

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.')) {
Copy link
Member

@ecraig12345 ecraig12345 Sep 21, 2021

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")

Copy link
Member Author

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

Copy link
Member Author

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

Copy link
Member

@ecraig12345 ecraig12345 left a 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

@ling1726 ling1726 merged commit d4696a9 into master Sep 21, 2021
!packagePathOrJson || typeof packagePathOrJson === 'string'
? readConfig('package.json', packagePathOrJson)
: packagePathOrJson;
typeof packagePathOrJson === 'string' ? readConfig('package.json', packagePathOrJson) : packagePathOrJson;
Copy link
Member

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ling1726 ling1726 deleted the chore/separate-v9-release branch September 27, 2021 14:06
mlp73 pushed a commit to mlp73/fluentui that referenced this pull request Jan 17, 2022
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

react-components versioning and release cycle
5 participants