-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
MSBuild Release Checklist 17.13
At any time
- Create a new issue to track the release checklist, with this checklist copied into the issue.
- Replace
17.12with the previous release version, for example17.9 - Replace
17.13with the current release version, for example17.10 - Replace
17.14with the next release version, for example17.11
- Replace
- Create
vs17.13branch - Create darc channel for
VS 17.14if it doesn't already exist
darc add-channel --name "VS 17.14" - Ping internal "First Responders" Teams channel to get the new channel made available as a promotion target (e.g. Make "VS 17.6" darc channel promotionable arcade#12150): Make 17.14 promotionable arcade#15331
At release time
Before starting the process:
- If the release is being cut more than a few days before the VS-side snap, run insertions manually OR redirect MSBuild release branch
- Disable scheduled run of MSBuild VS Insertion pipeline (our 17.14 builds don't have a place to go in VS yet) by: Edit -> ... -> Triggers -> add a schedule on a dead branch (this overrides the YAML defined once-per-day schedule for main). Manual pipeline run: select as input resource the to-be-inserted "MSBuild" pipeline run on branch
vs17.13and VS TargetBranchmain.
OR - If the release is being cut more than couple of weeks modify YAML (and merge to affected MSBuild branches) of the VS insertion pipeline so that it schedules insertions from MSBuild
vs17.13to VSmain. Keep scheduled daily insertions to simplify your workflow and excludevs17.13from triggering insertion on each commit.
- Disable scheduled run of MSBuild VS Insertion pipeline (our 17.14 builds don't have a place to go in VS yet) by: Edit -> ... -> Triggers -> add a schedule on a dead branch (this overrides the YAML defined once-per-day schedule for main). Manual pipeline run: select as input resource the to-be-inserted "MSBuild" pipeline run on branch
Branching from main
- If the new version's branch was created before the Visual Studio fork: fast-forward merge the correct commit (the one that is currently inserted to VS main) to the
vs17.13branch
e.g.:git push upstream 2e6f2ff7ea311214255b6b2ca5cc0554fba1b345:refs/heads/vs17.10
(This is for the case where we create the branch too early and want it to be based actually on a different commit. If you waited until a good point in time withmainin a clean state, just branch off and you are done. The branch should point to a good, recent spot, so the final-branding PR goes in on top of the right set of commits.) - Update the branch merge flow in
.config/git-merge-flow-config.jsoncfile to have the currently-in-servicing branches. - Create 17.14 branding PR (in main) including public API baseline package version change: {{URL_OF_NEXT_VERSION_BRANDING_PR}}.
- In the file
eng/Versions.propsUpdate theVersionPrefixto17.14andPackageValidationBaselineVersionset to a latest internally available 17.13 preview version in the internal dnceng dotnet-tools feed. It might be needed to updateCompatibilitySuppressions.xmlfiles. See this documentation for more details. You can updateCompatibilitySuppressions.xmlfiles by running
dotnet pack MSBuild.Dev.slnf /p:ApiCompatGenerateSuppressionFile=true. - When VS main snaps to 17.13 and updates its version to 17.14, modify the MSBuild VS Insertion pipeline YAML so that it flows from MSBuild main to VS main.
- Update AutoTargetBranch selection in the YAML (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the MSBuild VS Insertion pipeline to insert MSBuild
vs17.13to the corresponding VS branchrel/d17.13. - Set scheduled insertion for main and remove exclusion of
vs17.13triggering on each commit if added earlier.
- Update AutoTargetBranch selection in the YAML (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the MSBuild VS Insertion pipeline to insert MSBuild
- In the file
- Merge 17.14 branding PR
Adjust DARC channels and subscriptions
- Remove the
mainto old release channel (17.13) default channel
darc delete-default-channel --repo https://github.com/dotnet/msbuild --branch main --channel "VS 17.13" - Associate the
mainbranch with the next release channel
darc add-default-channel --channel "VS 17.13" --branch main --repo https://github.com/dotnet/msbuild - Check subscriptions for the forward-looking channel
VS 17.14and update as necessary (for instance, SDK'smainbranch should usually be updated, whereas release branches often should not be
darc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS 17.13" - Update channel VS 17.13 to VS 17.14 for the sdk main subscription and any others from the previous step
darc update-subscription --id sdk_main_branch_id - Ensure that the current release channel
VS 17.13is associated with the correct release branch
darc get-default-channels --source-repo https://github.com/dotnet/msbuild --branch vs17.13
if it is not,darc add-default-channel --channel "VS 17.13" --branch vs17.13 --repo https://github.com/dotnet/msbuild - Double check subscriptions from our repo
darc get-subscriptions --target-repo dotnet/msbuildand update subscriptions toVS17.13andmainbranches according to supported versions of VS and SDK:- NuGet client
- Based on VS version channel
darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/nuget/nuget.client
- Source Build Packages
- Based on .NET version channel
darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/source-build-reference-packages
- Roslyn:
- Based on VS version channel
darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/roslyn
- Arcade:
- Based on .NET version channel--does not change every MSBuild release
darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/arcade
- NuGet client
Adjust pipelines / releases
- Fix OptProf data flow for the new vs17.13 branch
- Run the official build for vs17.13 without OptProf (set
SkipApplyOptimizationDatavariable in 'Advanced options' section of the 'Run pipeline' menu totrue) or alternatively with the latest Opt-Prof collected for the main branch (setOptional OptProfDrop Overrideto the drop path of the collected data, which could be found in the logs of the pipeline: Windows_NT -> Build -> search forOptimizationData). - Check that the OptProf data collection pipeline run is triggered for vs17.13. If not, run manually ('Run pipeline' in upper right)
- Run the official build for vs17.13 with no extra customization - OptProf should succeed now
- Run the official build for vs17.13 without OptProf (set
- Restore MSBuild VS Insertion pipeline to the default YAML defined schedule, by removing all triggers from Edit -> ... -> Triggers.
Configure localization
- Create 17.13 localization ticket: https://aka.ms/ceChangeLocConfig (requesting to switch localization from 17.12 to 17.13): https://ceapex.visualstudio.com/CEINTL/_workitems/edit/1018906
- Enable 17.13 localization - by setting
EnableReleaseOneLocBuildtotrue - Disable 17.12 localization - by setting
EnableReleaseOneLocBuildtofalse. Update the comment on the same line. - Create and merge a PR in main to update a localization version comment in setting
EnableReleaseOneLocBuildto set up the merge conflict when this line will be updated in the release branch.
Final branding
- Prepare final branding PR for
vs17.13: Final Branding #11130 - Merge final branding to
vs17.13branch - Update perfstar MSBuild insertions configuration: example PR: https://dev.azure.com/devdiv/DevDiv/_git/dotnet-perfstar/pullrequest/600164
- Note down the build (will be helpful for requesting nuget packages publishing):
build: https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=10705997&view=results
inserted as: https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequest/598395 - Get M2 or QB approval as necessary per the VS schedule
- Merge to VS (babysit the automatically generated VS insertion PR https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequests for the MSBuild commit noted in above step): https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequest/598395
- Respond to the 'VS xyz package stabilization' email - with the merged insertion PR (as nowVS is on stable version).
- Update the PackageValidationBaselineVersion to the latest released version (17.13.0) - this might require temporary addition of the build artifacts feed as the new version is not yet added to the official feeds (this is post release). This can trigger a high severity CG error (https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/secure-supply-chain/how-to-securely-configure-package-source-files) - however it should be fine to keep this temporary feed untill the release.
- Update the requested SDK version for bootstrap folder (the
BootstrapSdkVersionproperty in Versions.props) and buildToolCommand/_InitializeBuildToolCommand values in cibuild_bootstrapped_msbuild scripts if a fresh sdk was released (released runtimes and associated sdk versions can be checked here - https://dotnet.microsoft.com/download/visual-studio-sdks - make sure to always check the details of the appropriate targeted version of .NET for the matching latest version of SDK).
ASAP On/After GA:
Timing based on the (Microsoft-internal) release schedule.
-
Push packages to nuget.org (not currently automated, contact dnceng - search "Publish MSBuild 17.6 to NuGet.org" email subject for template).
Following packages should be published (
THIS_RELEASE_EXACT_VERSIONis equal toVersionPrefixthat comes form the eng\Version.props, that were part of the build we are trying to get published):- Microsoft.Build.Utilities.Core.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.Build.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.Build.Framework.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.Build.Runtime.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.Build.Tasks.Core.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.NET.StringTools.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
- Microsoft.Build.Templates.{{THIS_RELEASE_EXACT_VERSION}}.nupkg
Note: Microsoft.Build.Conversion.Core and Microsoft.Build.Engine are not part of the list. Microsoft.Build.Templates is part of the list. Those 3 packages are a difference to the historic publishing list.
-
Publish docs: submit reference request at https://aka.ms/publishondocs
- Click on the link labeled Request – Reference Publishing
- You can use existing ticket as a reference
-
Remove the temporarily added build feed from
nuget.configif it was added in theUpdate the PackageValidationBaselineVersionstep -
Update
mainsubscriptions to the new channel (this can be done before or after release - depending on when the source repos from our previous - VS 17.13 - channle start to publish in the next - VS 17.14 - channel)
darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --target-branch main -
Create the 17.13 release
- Create tag (can be done upfront)
git checkout <commit noted above> git tag v17.13.3 git push upstream v17.13.3- Create Release in Github with
Create Release from TagGH option (https://github.com/dotnet/msbuild/releases/new?tag=v17.9.3) - the release notes can be prepopulated (Generate Release Notes)