Skip to content

Checklist for Toolset Updates

Stephan T. Lavavej edited this page Nov 2, 2025 · 42 revisions

Initial Setup

On your development machine:

  1. Install PowerShell 7.x.
    • This installs pwsh.exe.
  2. Install Azure PowerShell.
    • To install:
      Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
    • To sign in:
      Connect-AzAccount -Subscription 'CPP_STL_GitHub'
    • To check the latest installed version:
      (Get-InstalledModule -Name Az -AllVersions).Version
    • To update:
      Update-Module -Name Az -Scope CurrentUser
    • To uninstall (unusual), delete:
      %OneDrive%\Documents\PowerShell
      

Toolset Update

  1. Create a new branch in your own fork.
  2. Edit $/azure-devops/create-1es-hosted-pool.ps1 and $/azure-devops/provision-image.ps1 to make the changes/updates you want to make. Most changes will be merely updating version numbers which happens in provision-image.ps1.
    • To find a new location, check Azure Capacity Guidance.
    • To find available VM sizes, check Azure Internal Pricing and run:
      (Get-AzVMSize -Location eastus2).Name | Sort-Object
    • To find available OS SKUs:
      (Get-AzVMImageSku -Location eastus2 -PublisherName MicrosoftWindowsServer -Offer WindowsServer).Skus
  3. To update version numbers:
    • MSVC
      • Checked in $/CMakeLists.txt
      • Checked in $/stl/inc/yvals_core.h (coarse-grained, limited by MSVC-internal toolset)
    • WinSDK
      • Mentioned in $/README.md
      • Checked in $/CMakeLists.txt
      • Selected in $/azure-devops/provision-image.ps1
      • Should match MSVC-internal .corext/Configs/default.config
    • CMake
      • Checked in $/**/CMakeLists.txt
    • Python
      • Mentioned in $/README.md
      • Checked in $/tests/CMakeLists.txt
      • Selected in $/azure-devops/provision-image.ps1
    • Clang
      • Mentioned in $/README.md
      • Checked in $/stl/inc/yvals_core.h (coarse-grained)
      • Follow update instructions in $/.clang-format
      • Checked in $/tools/format/CMakeLists.txt
      • Update table in Macro _MSVC_STL_UPDATE
      • Should match MSVC-internal .corext/Configs/default.config, src/qa/distrib.yaml, src/vctools/setenv/setenv_common.cmd
    • CUDA
      • Checked in $/stl/inc/yvals_core.h
      • Selected in $/azure-devops/provision-image.ps1
      • Update table in Macro _MSVC_STL_UPDATE
    • boost-math
      • The GitHub submodule should match MSVC-internal src/vctools/vcpkg_overlay_ports/boost-math
      • Follow the instructions at MSVC-internal src/vctools/docs/src/workflow_demos/OpenSourceDependencies/oss_dependency.md to update Central Feed Services
    • PowerShell
      • Selected in $/azure-devops/provision-image.ps1
  4. Run $/azure-devops/create-1es-hosted-pool.ps1 -Arch 'x64'.
    • This should take approximately 40 minutes. Update this page if the expected time seems to be consistently wrong.
  5. Update poolName in $/azure-devops/config.yml.
  6. Run $/azure-devops/create-1es-hosted-pool.ps1 -Arch 'arm64'.
  7. Update arm64PoolName in $/azure-devops/config.yml.
  8. Create/update a PR from your branch to microsoft/STL.
    • You must manually grant permission:
      1. Click Details for the STL-CI check.
      2. Click View more details on Azure Pipelines.
      3. Click View on the banner that says, "This pipeline needs permission to access a resource before this run can continue to Code Format".
      4. Click Permit.
      5. Click Permit again.
    • You'll need to do this again when the ARM64 checks use the ARM64 pool.
    • If there are substantial code review changes, cleanup the abandoned pools and resource groups (see below), make the code review requested changes, and restart the process.
  9. After merging your PR, wait for a successful CI run, then cleanup the old pools and resource groups (see below).
  10. ⚠️ The next STL-ASan-CI run will also need to be granted permission!

Cleanup

⚠️ Be careful! Don't delete machinery that's in use!

  1. Delete the old pools from https://dev.azure.com/vclibs/_settings/agentpools .
  2. Delete the old resource groups from the Azure portal.

Resource Groups

  1. Go to https://portal.azure.com
  2. Click Subscriptions
  3. Click CPP_STL_GitHub
    • If you don't see that at first:
    • Check "Show only subscriptions selected in the global subscriptions filter"
    • Click "global subscriptions filter"
    • Select CPP_STL_GitHub
  4. Left column > Settings > click Resource groups
Clone this wiki locally