From aeb9e0ff3441f8f4c77a64cb8455a8a646c0d60f Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Thu, 12 Dec 2024 18:57:35 +0100 Subject: [PATCH 1/6] Update release-checklist.md --- documentation/release-checklist.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index fe64e8b61c2..beeb3c11a2c 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -29,13 +29,14 @@ _(This is for the case where we create the branch too early and want it to be ba - [ ] When VS main snaps to {{THIS_RELEASE_VERSION}} and updates its version to {{NEXT_VERSION}}, modify the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) YAML so that it flows from MSBuild main to VS main. - [ ] Update AutoTargetBranch selection in the [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) to insert MSBuild `vs{{THIS_RELEASE_VERSION}}` to the corresponding VS branch `rel/d{{THIS_RELEASE_VERSION}}`. - [ ] Set scheduled insertion for main and remove exclusion of `vs{{THIS_RELEASE_VERSION}}` triggering on each commit if added earlier. -- [ ] Merge {{NEXT_VERSION}} branding PR +- [ ] Merge {{NEXT_VERSION}} branding PR +- [ ] Create 'Final Branding' PR in vs{{THIS_RELEASE_VERSION}} - add `release` as a suffix (on same line! - to intentionaly make it merge conflict on flows to main) after the `VersionPrefix` in the Version.props file ### Adjust DARC channels and subscriptions - [ ] Remove the `main` to old release channel ({{THIS_RELEASE_VERSION}}) default channel \ `darc delete-default-channel --repo https://github.com/dotnet/msbuild --branch main --channel "VS {{THIS_RELEASE_VERSION}}"` - [ ] Associate the `main` branch with the next release channel \ -`darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` +`darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` - [ ] Check subscriptions for the forward-looking channel `VS {{NEXT_VERSION}}` and update as necessary (for instance, SDK's `main` branch should usually be updated, whereas release branches often should not be \ `darc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS {{THIS_RELEASE_VERSION}}"` - [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step From bc15a0dd71e92718bb3a2c1913b30c1edc396222 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Thu, 12 Dec 2024 19:00:47 +0100 Subject: [PATCH 2/6] Fix edit --- documentation/release-checklist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index beeb3c11a2c..76e36ef9828 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -30,7 +30,6 @@ _(This is for the case where we create the branch too early and want it to be ba - [ ] Update AutoTargetBranch selection in the [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) to insert MSBuild `vs{{THIS_RELEASE_VERSION}}` to the corresponding VS branch `rel/d{{THIS_RELEASE_VERSION}}`. - [ ] Set scheduled insertion for main and remove exclusion of `vs{{THIS_RELEASE_VERSION}}` triggering on each commit if added earlier. - [ ] Merge {{NEXT_VERSION}} branding PR -- [ ] Create 'Final Branding' PR in vs{{THIS_RELEASE_VERSION}} - add `release` as a suffix (on same line! - to intentionaly make it merge conflict on flows to main) after the `VersionPrefix` in the Version.props file ### Adjust DARC channels and subscriptions - [ ] Remove the `main` to old release channel ({{THIS_RELEASE_VERSION}}) default channel \ @@ -72,7 +71,8 @@ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" - [ ] Create and merge a PR in main to update a localization version comment in setting [`EnableReleaseOneLocBuild`](https://github.com/dotnet/msbuild/blob/main/.vsts-dotnet.yml) to set up the merge conflict when this line will be updated in the release branch. ### Final branding -- [ ] Prepare final branding PR for `vs{{THIS_RELEASE_VERSION}}`: {{URL_OF_FINAL_BRANDING_PR}} +- [ ] Prepare final branding PR for `vs{{THIS_RELEASE_VERSION}}`: {{URL_OF_FINAL_BRANDING_PR}} + Edit Version.props file - add `release` as a suffix (on same line! - to intentionaly make it merge conflict on flows to main) after the `VersionPrefix` - [ ] Merge final branding to `vs{{THIS_RELEASE_VERSION}}` branch - [ ] Update perfstar MSBuild insertions configuration: [example PR](https://dev.azure.com/devdiv/DevDiv/_git/dotnet-perfstar/pullrequest/522843): {{URL_OF_PERFSTAR_PR}} - [ ] Note down the build (will be helpful for requesting nuget packages publishing): {{URL_OF_BUILD}} From 9adec47d76ea5579266dc24916aa0e3981067051 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Fri, 13 Dec 2024 12:34:41 +0100 Subject: [PATCH 3/6] Update instructuins --- documentation/release-checklist.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index 76e36ef9828..6b9b97185ca 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -75,9 +75,10 @@ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" Edit Version.props file - add `release` as a suffix (on same line! - to intentionaly make it merge conflict on flows to main) after the `VersionPrefix` - [ ] Merge final branding to `vs{{THIS_RELEASE_VERSION}}` branch - [ ] Update perfstar MSBuild insertions configuration: [example PR](https://dev.azure.com/devdiv/DevDiv/_git/dotnet-perfstar/pullrequest/522843): {{URL_OF_PERFSTAR_PR}} -- [ ] Note down the build (will be helpful for requesting nuget packages publishing): {{URL_OF_BUILD}} - [ ] 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): {{URL_OF_VS_INSERTION}} + The PR will be helpful for requesting nuget packages publishing - as it contains the inserted packages versions + - [ ] 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 ({{THIS_RELEASE_VERSION}}.0) - this might require temporary addition of the [build artifacts feed](https://github.com/dotnet/msbuild/blob/29397b577e3ec0fe0c7650c3ab0400909655dc88/NuGet.config#L9) 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 `BootstrapSdkVersion` property in [Versions.props](https://github.com/dotnet/msbuild/blob/main/eng/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). @@ -87,7 +88,7 @@ Timing based on the [(Microsoft-internal) release schedule](https://dev.azure.co - [ ] 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_VERSION` is equal to `VersionPrefix` that comes form the eng\Version.props, that were part of the build we are trying to get published): + Following packages should be published (`THIS_RELEASE_EXACT_VERSION` is equal to `VersionPrefix` that 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): - Microsoft.Build.Utilities.Core.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.Build.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.Build.Framework.{{THIS_RELEASE_EXACT_VERSION}}.nupkg From 93a1a5ee1216718d817802e25ae00d795fc515a9 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Dec 2024 18:33:40 +0100 Subject: [PATCH 4/6] Add channel association --- documentation/release-checklist.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index 6b9b97185ca..1bc476a165a 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -19,6 +19,8 @@ OR - [ ] If the release is being cut more than couple of weeks modify [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (and merge to affected MSBuild branches) of the [VS insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) so that it schedules insertions from MSBuild `vs{{THIS_RELEASE_VERSION}}` to VS `main`. Keep scheduled daily insertions to simplify your workflow and exclude `vs{{THIS_RELEASE_VERSION}}` from triggering insertion on each commit. ### Branching from main +- [ ] Associate the `vs{{THIS_RELEASE_VERSION}}` branch with the next VS {{THIS_RELEASE_VERSION}} release channel \ +`darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` - [ ] 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 `vs{{THIS_RELEASE_VERSION}}` branch \ 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 with `main` in 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.)_ From 5278e70906b62006132aa0c826b58200b2781499 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Thu, 19 Dec 2024 13:30:03 +0100 Subject: [PATCH 5/6] Update steps --- documentation/release-checklist.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index 1bc476a165a..cbb7928969c 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -40,8 +40,8 @@ _(This is for the case where we create the branch too early and want it to be ba `darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` - [ ] Check subscriptions for the forward-looking channel `VS {{NEXT_VERSION}}` and update as necessary (for instance, SDK's `main` branch should usually be updated, whereas release branches often should not be \ `darc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS {{THIS_RELEASE_VERSION}}"` -- [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step -`darc update-subscription --id sdk_main_branch_id` + - [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step + `darc update-subscription --id --channel "VS {{NEXT_VERSION}}"` - [ ] Ensure that the current release channel `VS {{THIS_RELEASE_VERSION}}` is associated with the correct release branch\ `darc get-default-channels --source-repo https://github.com/dotnet/msbuild --branch vs{{THIS_RELEASE_VERSION}}` \ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` @@ -58,6 +58,7 @@ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" - [ ] 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` +- [ ] Make sure the non-infrastructure dependencies (currently Roslyn and Nuget) are set to 'disabled' - we do not want to automatically bump them. The version updates should be explicitly driven by SDK or VS. ### Adjust pipelines / releases - [ ] Fix OptProf data flow for the new vs{{THIS_RELEASE_VERSION}} branch From 56911ad83e60e96f4df21f921e914658c2a708fc Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 23 Dec 2024 14:08:58 +0100 Subject: [PATCH 6/6] Adjust the default channel association suggestions --- documentation/release-checklist.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index cbb7928969c..2d6403ddf03 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -19,8 +19,15 @@ OR - [ ] If the release is being cut more than couple of weeks modify [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (and merge to affected MSBuild branches) of the [VS insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) so that it schedules insertions from MSBuild `vs{{THIS_RELEASE_VERSION}}` to VS `main`. Keep scheduled daily insertions to simplify your workflow and exclude `vs{{THIS_RELEASE_VERSION}}` from triggering insertion on each commit. ### Branching from main -- [ ] Associate the `vs{{THIS_RELEASE_VERSION}}` branch with the next VS {{THIS_RELEASE_VERSION}} release channel \ -`darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` +- [ ] Ensure planned branch association to the channel + - [ ] Check if the association exist (it is now recommended to create it as a part of the previous release checklist):\ + `darc get-default-channels --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --source-repo https://github.com/dotnet/msbuild` + - [ ] This step is done if output shows active expected association such as:\ + `(5997) https://github.com/dotnet/msbuild @ vs17.13 -> VS 17.13` + - [ ] If the association is missing - we'll see output similar to:\ + `No matching channels were found.` + - [ ] In such case - associate the `vs{{THIS_RELEASE_VERSION}}` branch with the next VS {{THIS_RELEASE_VERSION}} release channel \ + `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` - [ ] 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 `vs{{THIS_RELEASE_VERSION}}` branch \ 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 with `main` in 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.)_ @@ -38,6 +45,8 @@ _(This is for the case where we create the branch too early and want it to be ba `darc delete-default-channel --repo https://github.com/dotnet/msbuild --branch main --channel "VS {{THIS_RELEASE_VERSION}}"` - [ ] Associate the `main` branch with the next release channel \ `darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` +- [ ] Prepare the same channel association as well for the next release branch (vs{{NEXT_VERSION}}) - as a preparation for a next release:\ + `darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch vs{{NEXT_VERSION}} --repo https://github.com/dotnet/msbuild` - [ ] Check subscriptions for the forward-looking channel `VS {{NEXT_VERSION}}` and update as necessary (for instance, SDK's `main` branch should usually be updated, whereas release branches often should not be \ `darc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS {{THIS_RELEASE_VERSION}}"` - [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step