Skip to content

Release 17.13 #11126

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

Closed
52 tasks done
JanKrivanek opened this issue Dec 12, 2024 · 0 comments
Closed
52 tasks done

Release 17.13 #11126

JanKrivanek opened this issue Dec 12, 2024 · 0 comments
Assignees
Labels

Comments

@JanKrivanek
Copy link
Member

JanKrivanek commented Dec 12, 2024

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.12 with the previous release version, for example 17.9
    • Replace 17.13 with the current release version, for example 17.10
    • Replace 17.14 with the next release version, for example 17.11
  • Create vs17.13 branch
  • Create darc channel for VS 17.14 if 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.13 and VS TargetBranch main.
      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.13 to VS main. Keep scheduled daily insertions to simplify your workflow and exclude vs17.13 from triggering insertion on each commit.

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.13 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.)
  • Update the branch merge flow in .config/git-merge-flow-config.jsonc file 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.props Update the VersionPrefix to 17.14 and PackageValidationBaselineVersion set to a latest internally available 17.13 preview version in the internal dnceng dotnet-tools feed. It might be needed to update CompatibilitySuppressions.xml files. See this documentation for more details. You can update CompatibilitySuppressions.xml files 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.13 to the corresponding VS branch rel/d17.13.
      • Set scheduled insertion for main and remove exclusion of vs17.13 triggering on each commit if added earlier.
  • Merge 17.14 branding PR

Adjust DARC channels and subscriptions

  • Remove the main to 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 main branch 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.14 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 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.13 is 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/msbuild and update subscriptions to VS17.13 and main branches 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

Adjust pipelines / releases

  • Fix OptProf data flow for the new vs17.13 branch
    • Run the official build for vs17.13 without OptProf (set SkipApplyOptimizationData variable in 'Advanced options' section of the 'Run pipeline' menu to true) or alternatively with the latest Opt-Prof collected for the main branch (set Optional OptProfDrop Override to the drop path of the collected data, which could be found in the logs of the pipeline: Windows_NT -> Build -> search for OptimizationData).
    • 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
  • Restore MSBuild VS Insertion pipeline to the default YAML defined schedule, by removing all triggers from Edit -> ... -> Triggers.

Configure localization

Final branding

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_VERSION is equal to VersionPrefix that 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.config if it was added in the Update the PackageValidationBaselineVersion step

  • Update main subscriptions 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
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants