MSBuild Release Checklist 18.5
At any time
At release time
Before starting the process:
Branching from main
Adjust DARC channels and subscriptions
Adjust pipelines / releases
Configure localization
Final branding
ASAP On/After GA:
Timing based on the (Microsoft-internal) release schedule.
After release
If v18.6 is a new major version
MSBuild Release Checklist 18.5
At any time
18.4with the previous release version, for example17.918.5with the current release version, for example17.1018.6with the next release version, for example17.11vs18.5branchVS 18.6if it doesn't already existdarc add-channel --name "VS 18.6"At release time
Before starting the process:
vs18.5and VS TargetBranchmain.OR
vs18.5to VSmain. Keep scheduled daily insertions to simplify your workflow and excludevs18.5from triggering insertion on each commit.Branching from main
darc get-default-channels --channel "VS 18.5" --branch vs18.5 --source-repo https://github.com/dotnet/msbuild(5997) https://github.com/dotnet/msbuild @ vs17.13 -> VS 17.13No matching channels were found.vs18.5branch with the next VS 18.5 release channeldarc add-default-channel --channel "VS 18.5" --branch vs18.5 --repo https://github.com/dotnet/msbuildvs18.5branche.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 with
mainin 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.).config/git-merge-flow-config.jsoncfile to have the currently-in-servicing branches.eng/Versions.propsUpdate theVersionPrefixto18.6andPackageValidationBaselineVersionset to a latest internally available 18.5 preview version in the public dnceng dotnet-tools feed. It might be needed to updateCompatibilitySuppressions.xmlfiles. See this documentation for more details. You can updateCompatibilitySuppressions.xmlfiles by runningdotnet pack MSBuild.Dev.slnf /p:ApiCompatGenerateSuppressionFile=true.vs18.5to the corresponding VS branchrel/d18.5.vs18.6->rel/d18.6(preparation if we need to branch early and backport to previews)rel/d18.5case to TargetBranch parameter in Experimental insertionvs18.5triggering on each commit if added earlier.Adjust DARC channels and subscriptions
mainto old release channel (18.5) default channeldarc delete-default-channel --repo https://github.com/dotnet/msbuild --branch main --channel "VS 18.5"mainbranch with the next release channeldarc add-default-channel --channel "VS 18.6" --branch main --repo https://github.com/dotnet/msbuilddarc add-default-channel --channel "VS 18.6" --branch vs18.6 --repo https://github.com/dotnet/msbuildVS 18.6and update as necessary (for instance, SDK'smainbranch should usually be updated, whereas release branches often should not bedarc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS 18.5"darc update-subscription --id <subscription_id_of_msbuild_main_to_sdk_main> --channel "VS 18.6"VS 18.5is associated with the correct release branchdarc get-default-channels --source-repo https://github.com/dotnet/msbuild --branch vs18.5if it is not,
darc add-default-channel --channel "VS 18.5" --branch vs18.5 --repo https://github.com/dotnet/msbuilddarc get-subscriptions --target-repo dotnet/msbuildand update subscriptions toVS18.5branch according to supported versions of VS and SDK:darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/arcadedarc get-subscriptions --target-repo dotnet/msbuildand update subscriptions tomainbranch according to supported versions of VS and SDK:darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/nuget/nuget.clientdarc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/roslyndarc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/arcade- Enabled: Falsein thedarc get-subscriptionsoutput) - we do not want to automatically bump them. The version updates should be explicitly driven by SDK or VS.darc add-subscriptioncommand, any misconfigured subscription needs to be edit viadarc update-subscriptioncommand (for additional required and optional parameters run with--help)Adjust pipelines / releases
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).Configure localization
EnableReleaseOneLocBuildtotrueEnableReleaseOneLocBuildtofalse. Update the comment on the same line.EnableReleaseOneLocBuildto set up the merge conflict when this line will be updated in the release branch.Final branding
vs18.5:Use
scripts\Stabilize-Release.ps1script to updateeng\Versions.propsproperties.vs18.5branchThe PR will be helpful for requesting nuget packages publishing - as it contains the inserted packages versions
BootstrapSdkVersionproperty in Versions.props) 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).VisualStudio.ChannelName(andVisualStudio.MajorVersionif applicable) ofWindows_NTbuild step for our build pipeline in a newly created branch - it should point to the matching VS release branch and make sure the change is not automatically mergable with the interbranch flow (example: [vs17.8] Select proper VS channel #11246):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, it is as well part of the VS insertion PR noted above):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: Create ticket with existing template
Remove the temporarily added build feed from
nuget.configif it was added in theUpdate the PackageValidationBaselineVersionstepUpdate
mainsubscriptions to the new channel (this can be done before or after release - depending on when the source repos from our previous - VS 18.5 - channle start to publish in the next - VS 18.6 - channel)darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --target-branch mainCreate the 18.5 release
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)Extend the expiration date of the latest Opt-Prof data for
vs18.5branch.OptimizationData/DotNet-msbuild-Trusted/vs18.5/.... It can be found in the MSBuild CI logs of the "Build" task or alternatively, in the Opt-Prof pipeline logs under the "Publish OptimizationInputs drop" task.After release
If v18.6 is a new major version