From cf1501c51b67497812c53517e56a15ac6b4540ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Fri, 11 Sep 2026 17:56:46 +0200 Subject: [PATCH 1/2] Fix internal Helix queue alias expansion Resolve library and installer queue aliases at template expansion time so internal submissions can strip .Open before runtime macro expansion. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6ecee3ed-4a6f-4c01-bf01-118338ab3dcc --- .../installer/helix-queues-setup.yml | 7 +++++-- .../libraries/helix-queues-setup.yml | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/eng/pipelines/installer/helix-queues-setup.yml b/eng/pipelines/installer/helix-queues-setup.yml index 63537adce4e97a..fb7833f2b23d47 100644 --- a/eng/pipelines/installer/helix-queues-setup.yml +++ b/eng/pipelines/installer/helix-queues-setup.yml @@ -18,6 +18,9 @@ steps: osGroup: ${{ parameters.osGroup }} osSubgroup: ${{ parameters.osSubgroup }} useHelixMonitor: ${{ parameters.useHelixMonitor }} + + # IMPORTANT: Use ${{ variables.* }} for queue aliases, not $(...), so helix.yml can strip the .Open suffix + # at template expansion time for internal runs. Runtime macros expand too late. helixQueues: # Linux arm @@ -42,11 +45,11 @@ steps: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - $(helix_macos_arm64) + - ${{ variables.helix_macos_arm64 }} # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - $(helix_macos_x64) + - ${{ variables.helix_macos_x64 }} # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index d0bbe354121571..747798d0d1b6ae 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -21,6 +21,9 @@ jobs: pool: ${{ parameters.pool }} platform: ${{ parameters.platform }} shouldContinueOnError: ${{ parameters.shouldContinueOnError }} + + # IMPORTANT: Use ${{ variables.* }} for queue aliases, not $(...), so helix.yml can strip the .Open suffix + # at template expansion time for internal runs. Runtime macros expand too late. helixQueues: # Linux arm @@ -81,11 +84,11 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - $(helix_macos_arm64) + - ${{ variables.helix_macos_arm64 }} # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - $(helix_macos_x64) + - ${{ variables.helix_macos_x64 }} # Android # Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects, @@ -101,19 +104,19 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'iossimulator_arm64', 'tvossimulator_arm64', 'maccatalyst_arm64') }}: - - $(helix_macos_ios_simulator_arm64) + - ${{ variables.helix_macos_ios_simulator_arm64 }} # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: - - $(helix_macos_ios_simulator_x64) + - ${{ variables.helix_macos_ios_simulator_x64 }} # iOS devices - ${{ if in(parameters.platform, 'ios_arm64') }}: - - $(helix_macos_ios_device) + - ${{ variables.helix_macos_ios_device }} # tvOS devices - ${{ if in(parameters.platform, 'tvos_arm64') }}: - - $(helix_macos_tvos_device) + - ${{ variables.helix_macos_tvos_device }} # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: @@ -132,7 +135,7 @@ jobs: - (Windows.10.Amd64.ServerRS5.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2019-helix-amd64@sha256:377831a7ccbdcbb1d71b5fd7dcf1a5e79314bd4d5e12f818cdc41815a3b3b2a6 - ${{ if or(ne(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}: # Primary Windows queues for all builds: latest + Nano (distinct environment) - - $(helix_windows_x64_latest) + - ${{ variables.helix_windows_x64_latest }} - ${{ 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@sha256:d2d8804d22eb173947282a2aa24f73fbfe06e35ccbf26dcde3199368218158b8 # Additional Windows versions on non-PR builds for broader coverage @@ -190,6 +193,6 @@ jobs: # Browser WebAssembly macOS - ${{ if eq(parameters.platform, 'browser_wasm_mac') }}: - - $(helix_macos_arm64) + - ${{ variables.helix_macos_arm64 }} ${{ insert }}: ${{ parameters.jobParameters }} From 650c65e72739fc65316f39d767818953c2c32256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Fri, 11 Sep 2026 19:14:41 +0200 Subject: [PATCH 2/2] Select public and internal Helix aliases explicitly Keep runtime alias expansion and select internal aliases before submission, matching the CoreCLR queue setup. Compile-time alias references were empty in the expanded pipeline. Document the selection requirement in all three queue templates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6ecee3ed-4a6f-4c01-bf01-118338ab3dcc --- .../coreclr/templates/helix-queues-setup.yml | 3 ++ .../installer/helix-queues-setup.yml | 14 ++++-- .../libraries/helix-queues-setup.yml | 44 ++++++++++++++----- 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index 69f71ee0a1b171..a8cd074472f1ae 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -30,6 +30,9 @@ jobs: pool: ${{ parameters.pool }} platform: ${{ parameters.platform }} shouldContinueOnError: ${{ parameters.shouldContinueOnError }} + + # IMPORTANT: Select public/internal queue aliases explicitly. Runtime macros expand too late + # for helix.yml to strip the .Open suffix at template expansion time for internal runs. helixQueues: # iOS Simulator/Mac Catalyst arm64 diff --git a/eng/pipelines/installer/helix-queues-setup.yml b/eng/pipelines/installer/helix-queues-setup.yml index fb7833f2b23d47..90e227460c94f6 100644 --- a/eng/pipelines/installer/helix-queues-setup.yml +++ b/eng/pipelines/installer/helix-queues-setup.yml @@ -19,8 +19,8 @@ steps: osSubgroup: ${{ parameters.osSubgroup }} useHelixMonitor: ${{ parameters.useHelixMonitor }} - # IMPORTANT: Use ${{ variables.* }} for queue aliases, not $(...), so helix.yml can strip the .Open suffix - # at template expansion time for internal runs. Runtime macros expand too late. + # IMPORTANT: Select public/internal queue aliases explicitly. Runtime macros expand too late + # for helix.yml to strip the .Open suffix at template expansion time for internal runs. helixQueues: # Linux arm @@ -45,11 +45,17 @@ steps: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - ${{ variables.helix_macos_arm64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_arm64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_arm64_latest_internal) # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - ${{ variables.helix_macos_x64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_x64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_x64_latest_internal) # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index 747798d0d1b6ae..124c191c81f030 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -22,8 +22,8 @@ jobs: platform: ${{ parameters.platform }} shouldContinueOnError: ${{ parameters.shouldContinueOnError }} - # IMPORTANT: Use ${{ variables.* }} for queue aliases, not $(...), so helix.yml can strip the .Open suffix - # at template expansion time for internal runs. Runtime macros expand too late. + # IMPORTANT: Select public/internal queue aliases explicitly. Runtime macros expand too late + # for helix.yml to strip the .Open suffix at template expansion time for internal runs. helixQueues: # Linux arm @@ -84,11 +84,17 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - ${{ variables.helix_macos_arm64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_arm64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_arm64_latest_internal) # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - ${{ variables.helix_macos_x64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_x64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_x64_latest_internal) # Android # Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects, @@ -104,19 +110,31 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'iossimulator_arm64', 'tvossimulator_arm64', 'maccatalyst_arm64') }}: - - ${{ variables.helix_macos_ios_simulator_arm64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_ios_simulator_arm64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_ios_simulator_arm64_internal) # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: - - ${{ variables.helix_macos_ios_simulator_x64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_ios_simulator_x64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_ios_simulator_x64_internal) # iOS devices - ${{ if in(parameters.platform, 'ios_arm64') }}: - - ${{ variables.helix_macos_ios_device }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_ios_device) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_ios_device_internal) # tvOS devices - ${{ if in(parameters.platform, 'tvos_arm64') }}: - - ${{ variables.helix_macos_tvos_device }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_tvos_device) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_tvos_device_internal) # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: @@ -135,7 +153,10 @@ jobs: - (Windows.10.Amd64.ServerRS5.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2019-helix-amd64@sha256:377831a7ccbdcbb1d71b5fd7dcf1a5e79314bd4d5e12f818cdc41815a3b3b2a6 - ${{ if or(ne(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}: # Primary Windows queues for all builds: latest + Nano (distinct environment) - - ${{ variables.helix_windows_x64_latest }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_windows_x64_latest) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_windows_x64_latest_internal) - ${{ 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@sha256:d2d8804d22eb173947282a2aa24f73fbfe06e35ccbf26dcde3199368218158b8 # Additional Windows versions on non-PR builds for broader coverage @@ -193,6 +214,9 @@ jobs: # Browser WebAssembly macOS - ${{ if eq(parameters.platform, 'browser_wasm_mac') }}: - - ${{ variables.helix_macos_arm64 }} + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - $(helix_macos_arm64) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - $(helix_macos_arm64_latest_internal) ${{ insert }}: ${{ parameters.jobParameters }}