Skip to content

Checklist for Toolset Updates

Stephan T. Lavavej edited this page Apr 17, 2025 · 38 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
    • To check the latest installed version of Azure PowerShell:
      (Get-InstalledModule -Name Az -AllVersions).Version
    • To update Azure PowerShell:
      Update-Module -Name Az -Scope CurrentUser
    • If you ever need to uninstall Azure PowerShell (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 available VM sizes: (also check the internal VM price list)
      (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:
    • VS/MSVC
      • Mentioned in $/README.md
      • 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
      • Mentioned in $/README.md
      • Checked in $/**/CMakeLists.txt
    • Ninja
      • Mentioned in $/README.md
    • Python
      • Mentioned in $/README.md
      • Checked in $/tests/CMakeLists.txt
      • Selected in $/azure-devops/provision-image.ps1
    • Clang
      • 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
    • PowerShell
      • Selected in $/azure-devops/provision-image.ps1
  4. Run $/azure-devops/create-1es-hosted-pool.ps1. This should take approximately 40 minutes.
    • Update this page if the expected time seems to be consistently wrong.
  5. Update $/azure-devops/config.yml to point to the new pool.
  6. 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.
    • If there are substantial code review changes, cleanup the abandoned pool and resource group (see below), make the code review requested changes, and restart from step 3.
  7. After merging your PR, wait for a successful CI run, then cleanup the old pool and resource group (see below).
  8. ⚠️ 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 pool from https://dev.azure.com/vclibs/_settings/agentpools .
  2. Delete the resource group 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