Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 5, 2025

Replace hardcoded macOS queue names with centralized variable aliases from eng/pipelines/helix-platforms.yml, enabling automatic version updates across PR and CI definitions.

This PR updates the default queues for libraries and coreclr PRs to use the latest macOS version, namely 26 (Sequoia 15), for both public and internal queues.

Changes Made

Pipeline Configuration Files:

  • Added helix-platforms.yml import to runtime.yml, coreclr/ci.yml, and libraries/variables.yml at the pipeline level to avoid Azure Pipelines size limits

Helix Platform Definitions (helix-platforms.yml):

  • Updated helix_macos_x64_latest from OSX.13.Amd64.Open to OSX.26.Amd64.Open
  • Updated helix_macos_x64_latest_internal from OSX.13.Amd64 to OSX.26.Amd64 for consistency with ARM64 configuration
  • Both ARM64 and x64 now use macOS Sequoia 15 (version 26) as the latest version for both public and internal queues
  • Changed common aliases to use template substitution ${{ variables.* }} for variable definitions

Queue Setup Files:

  • installer/helix-queues-setup.yml: Replaced hardcoded OSX queue names with runtime expansion $(helix_macos_arm64) and $(helix_macos_x64)
  • libraries/helix-queues-setup.yml: Replaced hardcoded OSX queue names with runtime expansion $(helix_macos_arm64) and $(helix_macos_x64)
  • coreclr/templates/helix-queues-setup.yml: Replaced public branch hardcoded queue names with runtime expansion $(helix_macos_arm64) and $(helix_macos_x64) while preserving superpmi-diffs exception (OSX.14.Arm64.Open) and internal queues

Variable Expansion Strategy

  • Variable definitions in helix-platforms.yml use template substitution ${{ variables.* }} for compile-time evaluation
  • Variable references in helix-queues-setup.yml files use runtime expansion $(...) for runtime evaluation

Out of Scope

  • iOS/tvOS simulator/device queues (unchanged)
  • Python scripts (e.g., superpmi_collect_setup.py)
  • Older versions remain at their respective macOS versions

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Update macOS Helix queue names to use variable aliases Use helix platform variable aliases for macOS ARM64 and x64 queues Nov 5, 2025
Copilot AI requested a review from agocke November 5, 2025 09:01
Copilot finished work on behalf of agocke November 5, 2025 09:01
@agocke
Copy link
Member

agocke commented Nov 5, 2025

@copilot Do you need to import the variables definition file?

Copy link
Contributor Author

Copilot AI commented Nov 5, 2025

@copilot Do you need to import the variables definition file?

Yes, good catch! Added the import in eng/pipelines/common/variables.yml (commit 65c5bd5). The helix-platforms.yml file wasn't being imported anywhere, so the variables would not have been available. All pipelines (coreclr, libraries, runtime) include common/variables.yml, so they'll now have access to the helix platform variable aliases.

@agocke
Copy link
Member

agocke commented Nov 5, 2025

@copilot can you just import the variables in the files that need it, to prevent pipeline template pollution?

Copy link
Contributor Author

Copilot AI commented Nov 5, 2025

@copilot can you just import the variables in the files that need it, to prevent pipeline template pollution?

Done in commit 363d319. Moved the import from common/variables.yml to the three helix-queues-setup.yml files that actually use the variables (installer, libraries, and coreclr/templates). This prevents polluting the common variables namespace.

Copilot finished work on behalf of agocke November 5, 2025 18:34
@agocke
Copy link
Member

agocke commented Nov 5, 2025

@copilot It looks like this commit broke CI -- the runtime pipeline is no longer running

Copy link
Contributor Author

Copilot AI commented Nov 5, 2025

@copilot It looks like this commit broke CI -- the runtime pipeline is no longer running

Fixed in commit 59982bd. The issue was that I added a variables: section directly in the helix-queues-setup.yml template files, which isn't allowed in Azure Pipelines when templates are used in a jobs context. Moved the helix-platforms.yml import to xplat-setup.yml where variables are properly defined and passed to the job templates.

Copilot finished work on behalf of agocke November 5, 2025 21:29
@agocke
Copy link
Member

agocke commented Nov 5, 2025

@copilot it looks like helix-queues-setup takes variables as a parameter. Can we add the variables import there?

Copy link
Member

@agocke agocke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot please address comments

Copy link
Member

@agocke agocke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot please address feedback

Copy link
Member

@agocke agocke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot please address

Copilot finished work on behalf of agocke November 6, 2025 21:49
Copilot AI requested a review from agocke November 6, 2025 21:49
Copilot finished work on behalf of agocke November 6, 2025 22:14
@agocke agocke marked this pull request as ready for review November 7, 2025 00:03
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request centralizes and standardizes Helix queue platform definitions by introducing a single source of truth in helix-platforms.yml and updating queue setup files to reference these centralized variables. The key changes streamline platform management and ensure consistency across different components (libraries, installer, and coreclr).

Key Changes

  • Introduces helix-platforms.yml as a centralized template containing all Helix platform queue definitions
  • Updates macOS queue variables to use newer platform versions (OSX.26 for latest)
  • Refactors queue setup files to use runtime variable references instead of hardcoded queue names

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
eng/pipelines/runtime.yml Adds import of helix-platforms.yml template to make variables available pipeline-wide
eng/pipelines/helix-platforms.yml Reorganizes platform variables by moving common aliases to the end, adds comment explaining ordering requirement, updates macOS x64 latest version to OSX.26
eng/pipelines/libraries/helix-queues-setup.yml Replaces hardcoded macOS queue names with runtime variable references
eng/pipelines/installer/helix-queues-setup.yml Replaces hardcoded macOS queue names with runtime variable references
eng/pipelines/coreclr/templates/helix-queues-setup.yml Replaces conditional logic with runtime variable references for macOS queues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants