[infra] Add automated release PR creation script
Had this idea for a while now and finally got a bit of time to work on it.
Makes the whole process of creating a release PR a bit easier. It basically does everything automatically up until the point of creating a PR.
Let me know what you think.
And I did tidy up the changelog creation script a bit as well while i was at it ๐งน
Deploy preview: https://deploy-preview-18345--material-ui-x.netlify.app/
Bundle size report
Total Size Change: 0B(0.00%) - Total Gzip Change: 0B(0.00%) Files: 122 total (0 added, 0 removed, 0 changed)
Show details for 100 more bundles (22 more not shown)
@mui/x-chartsโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-proโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/BarChartProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/ChartContainerProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/ChartDataProviderProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/ChartsToolbarProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/ChartZoomSliderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/FunnelChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/Heatmapโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/LineChartProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/PieChartProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/RadarChartProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts-pro/ScatterChartProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/BarChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartContainerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartDataProviderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsAxisโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsAxisHighlightโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsClipPathโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsGridโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsLabelโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsLegendโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsLocalizationProviderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsOverlayโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsReferenceLineโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsSurfaceโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsTextโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsTooltipโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsXAxisโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsYAxisโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/Gaugeโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/LineChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/PieChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/RadarChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ScatterChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/SparkLineChartโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/Toolbarโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-gridโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-premiumโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-premium/DataGridPremiumโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-proโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-pro/DataGridProโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid/DataGridโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickersโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-proโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDateFnsโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDateFnsJalaliโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDayjsโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterLuxonโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMomentโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMomentHijriโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMomentJalaaliโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangeCalendarโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangePickerDayโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangePickerDay2โparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateTimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopDateRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopDateTimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopTimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/LocalizationProviderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MobileDateRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MobileDateTimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MobileTimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputDateRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputDateTimeRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputTimeRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/PickersRangeCalendarHeaderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputDateRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputDateTimeRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputTimeRangeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/StaticDateRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/TimeRangePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFnsโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFnsBaseโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFnsJalaliโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDayjsโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterLuxonโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMomentโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMomentHijriโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMomentJalaaliโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateCalendarโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DatePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateTimeFieldโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateTimePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DayCalendarSkeletonโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopDatePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopDateTimePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopTimePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DigitalClockโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/LocalizationProviderโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileDatePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileDateTimePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileTimePickerโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MonthCalendarโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MultiSectionDigitalClockโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickerDay2โparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickersActionBarโparsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickersCalendarHeaderโparsed: 0B(0.00%) gzip: 0B(0.00%)
Generated by :no_entry_sign: dangerJS against d54af6b4c07f82fc1f73500893673f56ac5f774f
I like the aspect automatically opening the PR with the correct title. I always spend time looking for "what is the correct format" ๐
You might want to add a line or two about this script in the scritpts/README.md since it's the reference about how to do the release
Why we have a bash and node versions of the same script? ๐
This was my first attempt ... in fact I will probably go back to it, but node scripts cannot handle git commands and lerna scripts very well, so this does seem to be the better option for now.
@JCQuintas in a second iteration on this i will most likely separate this monolithic script into several smaller ones (maybe using node scripts ๐คท๐ผ), but for now this should do and be tested ... agree?
@JCQuintas in a second iteration on this i will most likely separate this monolithic script into several smaller ones (maybe using node scripts ๐คท๐ผ), but for now this should do and be tested ... agree?
Im ok with that
@JCQuintas in a second iteration on this i will most likely separate this monolithic script into several smaller ones (maybe using node scripts ๐คท๐ผ), but for now this should do and be tested ... agree?
Personally, I disagree. It would be quite a waste to battle test this bash just to replace it with something else, that will never happen. An llm can refactor this for you into JavaScript in a heartbeat. Why not do it from the get go, so we can test on a proper version? a single JavaScript file is perfectly fine and much more comprehensible for more maintainers in this org than bash soup. You can call git and lerna quite conveniently with execa. e.g. see https://github.com/mui/mui-public/blob/c7891d8b9b5c4b5f2565f3833d8e4f6140b96017/scripts/publish.mjs#L219
@JCQuintas in a second iteration on this i will most likely separate this monolithic script into several smaller ones (maybe using node scripts ๐คท๐ผ), but for now this should do and be tested ... agree?
Personally, I disagree. It would be quite a waste to battle test this bash just to replace it with something else, that will never happen. An llm can refactor this for you into JavaScript in a heartbeat. Why not do it from the get go, so we can test on a proper version? a single JavaScript file is perfectly fine and much more comprehensible for more maintainers in this org than bash soup. You can call git and lerna quite conveniently with execa. e.g. see https://github.com/mui/mui-public/blob/c7891d8b9b5c4b5f2565f3833d8e4f6140b96017/scripts/publish.mjs#L219
All right... let me try to rewrite this in JS tomorrow. I did not know about execa before (although I searched for execution in node scripts ๐ซฃ).
@Janpot I must say I am fairly impressed by the rewrite the AI did. ๐คฏ
Great initiative. ๐ I haven't tried running it, just did a first review pass and I've got a clarification to make. Am I missing something, or this won't allow
independentversion releases (i.e. releasing[email protected], while the repo (or other package) version is8.3.3)? ๐ค
It should allow for that. The lerna script still runs like before. The only difference ere is that i rewrote the changelog generation into grabbing the version from the package json of the products.
@Janpot I must say I am fairly impressed by the rewrite the AI did. ๐คฏ
beware, they still hallucinate ๐
@Janpot I must say I am fairly impressed by the rewrite the AI did. ๐คฏ
beware, they still hallucinate ๐
I know! In this instance it went very well! ๐คฃ
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
@cherniavskii I added a step to fetch the fork remote name
Cherry-pick PRs will be created targeting branches: v6.x, v7.x