From 8c5533cb0bbb5188af7ac397f62695f379375212 Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Thu, 26 Mar 2026 13:35:07 -0700 Subject: [PATCH] Reduce helix queue fan-out for library tests on PR builds Reduce the number of helix queues used for library test execution on PR builds, deferring additional OS versions/distros to rolling builds. Linux x64: 3 queues -> 1 on PRs Keep: Ubuntu 26.04 (primary) Rolling-only: AzureLinux 3.0, CentOS Stream 10 Windows x64: 4 queues -> 2 on PRs Keep: Windows Server 2025 (newest), Nano Server 1809 (distinct env) Rolling-only: Windows Server 2022, Windows 11 Client Browser WASM Windows: 2 queues -> 1 on PRs Keep: Windows Server 2025 Rolling-only: Windows Server 2022 Estimated savings per library PR (based on build 1351553): linux_x64: 771 -> 257 work items (~13h saved) windows_x64: 1120 -> 560 work items (~9h saved) browser_wasm_win: 406 -> 203 work items (~21h saved) Rolling/CI builds continue to test all OS versions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../libraries/helix-queues-setup.yml | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index e883b1756f0fe8..093329d57c0eba 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -71,9 +71,12 @@ jobs: - ${{ if or(ne(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true))}}: # inner and outer loop CoreCLR (general set) + # Primary distro for all builds - (Ubuntu.2604.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-26.04-helix-amd64 - - (AzureLinux.3.0.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 - - (Centos.10.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64 + # Additional distros on rolling builds for broader coverage + - ${{ if eq(variables['isRollingBuild'], true) }}: + - (AzureLinux.3.0.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 + - (Centos.10.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64 # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: @@ -125,13 +128,16 @@ jobs: - ${{ if ne(parameters.jobParameters.testScope, 'outerloop') }}: - (Windows.10.Amd64.ServerRS5.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2019-helix-amd64 - ${{ if or(ne(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}: - - Windows.Amd64.Server2022.Open + # Primary Windows versions for all builds: newest server + Nano (distinct environment) - Windows.Server2025.Amd64.Open - - Windows.11.Amd64.Client.Open - - ${{ if eq(parameters.jobParameters.testScope, 'outerloop') }}: - - (Windows.10.Amd64.ServerRS5.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2019-helix-amd64 - ${{ if ne(parameters.jobParameters.runtimeFlavor, 'mono') }}: - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64 + # Additional Windows versions on rolling builds for broader coverage + - ${{ if eq(variables['isRollingBuild'], true) }}: + - Windows.Amd64.Server2022.Open + - Windows.11.Amd64.Client.Open + - ${{ if eq(parameters.jobParameters.testScope, 'outerloop') }}: + - (Windows.10.Amd64.ServerRS5.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2019-helix-amd64 # .NETFramework - ${{ if eq(parameters.jobParameters.framework, 'net481') }}: @@ -173,7 +179,10 @@ jobs: # Browser WebAssembly windows - ${{ if in(parameters.platform, 'browser_wasm_win', 'wasi_wasm_win') }}: - - (Windows.Amd64.Server2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-webassembly + # Primary Windows version for all builds - (Windows.Server2025.Amd64.Open)windows.server2025.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2025-helix-webassembly-amd64 + # Additional Windows version on rolling builds + - ${{ if eq(variables['isRollingBuild'], true) }}: + - (Windows.Amd64.Server2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-webassembly ${{ insert }}: ${{ parameters.jobParameters }}