Skip to content

Move Ubuntu Helix queues to bare 24.04/26.04 VMs#129863

Open
richlander wants to merge 5 commits into
mainfrom
richlander/ubuntu-helix-bare-vms
Open

Move Ubuntu Helix queues to bare 24.04/26.04 VMs#129863
richlander wants to merge 5 commits into
mainfrom
richlander/ubuntu-helix-bare-vms

Conversation

@richlander

Copy link
Copy Markdown
Member

Now that Ubuntu 26.04 VMs (and 24.04 VMs) are available in Helix, move the Ubuntu Helix coverage off the temporary containers-on-Azure-Linux arrangement and back onto bare Ubuntu VMs, per the Ubuntu 26.04 VM Plan (#125748). This restores the bare-VM testing the policy calls for and retires the 22.04 VMs by moving the oldest slots to 24.04.

Changes

eng/pipelines/helix-platforms.yml

Slot Before After
helix_linux_x64_oldest (+_internal) Ubuntu 22.04 container on AzureLinux bare Ubuntu.2404.Amd64.Open / Ubuntu.2404.Amd64
helix_linux_x64_ubuntu_latest Ubuntu 26.04 container on AzureLinux bare Ubuntu.2604.Amd64.Open
helix_linux_x64_ubuntu_oldest Ubuntu 22.04 container on AzureLinux bare Ubuntu.2404.Amd64.Open
helix_linux_arm64_latest Ubuntu 26.04 container on AzureLinux bare Ubuntu.2604.ArmArch.Open
helix_linux_arm64_oldest Ubuntu 22.04 container on AzureLinux bare Ubuntu.2404.ArmArch.Open
helix_browser_wasm_oldest ubuntu-22.04-helix-webassembly-amd64 ubuntu-24.04-helix-webassembly-amd64

eng/pipelines/libraries/helix-queues-setup.yml

  • CoreCLR primary distro (general set) → bare Ubuntu.2604.Amd64.Open

.github/skills/update-os-coverage/SKILL.md

  • Use the MCR registry tag list as the source of truth for verifying container image tags; note that the dotnet/versions image-info JSON is in flux pending the ORAS/OCI-artifact migration (dotnet/docker-tools#2142).

Notes

  • WASM stays containerized (latest 26.04, oldest 24.04) because the WebAssembly toolchain image is required; only the image version moves.
  • All bare-VM queues and image tags were verified present (Helix queue API and MCR registry tag list).
  • Residual 22.04 usage is intentionally not in this PR and remains tracked in Tracking: Ubuntu 26.04 VM Plan #125748:
    • Android emulator VMs (Ubuntu.2204.Amd64.Android.*) — no 24.04/26.04 Android Helix queue exists yet (needs dnceng).
    • SuperPMI ARM/arm64 host VMs (Ubuntu.2204.ArmArch) in src/coreclr/scripts/superpmi_collect_setup.py.

Reference: OS onboarding guide

Note

This pull request was AI/Copilot-generated.

richlander and others added 5 commits June 25, 2026 10:37
Now that Ubuntu 26.04 VMs are available, undo the temporary VM-to-container
conversion done in #125535. Each affected slot returns to a bare Ubuntu VM
at its current version (queues verified present in Helix):

helix-platforms.yml (oldest slots -> bare 22.04 VMs):
- helix_linux_x64_oldest            -> Ubuntu.2204.Amd64.Open
- helix_linux_x64_oldest_internal   -> Ubuntu.2204.Amd64
- helix_linux_x64_ubuntu_oldest     -> Ubuntu.2204.Amd64.Open
- helix_linux_arm64_oldest          -> Ubuntu.2204.ArmArch.Open

libraries/helix-queues-setup.yml (primary coverage -> bare 26.04 VMs):
- Mono path                         -> Ubuntu.2604.Amd64.Open
- Primary distro (general set)      -> Ubuntu.2604.Amd64.Open

Restores the bare-VM testing coverage described in the Ubuntu 26.04 VM
plan (#125748).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Revert the Mono path (linux_x64) back to the ubuntu-26.04-helix-amd64
container on AzureLinux; only the CoreCLR primary distro and the
helix-platforms oldest slots return to bare Ubuntu VMs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ahead of retiring the Ubuntu 22.04 VMs, make 24.04 the oldest bare-VM
slot (queues verified present in Helix):

- helix_linux_x64_oldest          -> Ubuntu.2404.Amd64.Open
- helix_linux_x64_oldest_internal -> Ubuntu.2404.Amd64
- helix_linux_x64_ubuntu_oldest   -> Ubuntu.2404.Amd64.Open
- helix_linux_arm64_oldest        -> Ubuntu.2404.ArmArch.Open

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- helix_linux_x64_ubuntu_latest -> Ubuntu.2604.Amd64.Open (bare VM, no container)
- helix_linux_arm64_latest       -> Ubuntu.2604.ArmArch.Open (bare VM, no container)
- helix_browser_wasm_oldest      -> ubuntu-24.04-helix-webassembly-amd64 (kept as
  container; the WASM toolchain image is required)

WASM latest stays on the 26.04 webassembly container for the same reason.
All bare-VM queues and image tags verified present (Helix queue API / MCR registry).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make the MCR registry tag list (mcr.microsoft.com/v2/dotnet-buildtools/prereqs/tags/list)
the source of truth for confirming container tags. The image-info JSON in
dotnet/versions can be stale or unavailable when branch protection blocks its
automated push; note the in-flux state and the pending ORAS/OCI-artifact
migration (dotnet/docker-tools#2142). Image-info is now a secondary cross-check.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Helix queue selection to shift Ubuntu coverage from the temporary “containers-on-AzureLinux” setup back to bare Ubuntu VM queues, using Ubuntu 24.04 for “oldest” coverage and Ubuntu 26.04 for “latest” where applicable.

Changes:

  • Switch the libraries “CoreCLR primary distro” queue to bare Ubuntu.2604.Amd64.Open.
  • Update helix-platforms.yml Ubuntu x64/arm64 “oldest/latest” variables to bare 24.04/26.04 VM queues (while keeping WASM containerized and bumping its oldest image to 24.04).
  • Update the OS coverage skill guidance to verify prereqs image tags via the MCR registry tag list (treating the dotnet/versions image-info JSON as a secondary cross-check).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
eng/pipelines/libraries/helix-queues-setup.yml Moves the primary Linux x64 CoreCLR libraries queue to bare Ubuntu.2604.Amd64.Open.
eng/pipelines/helix-platforms.yml Re-points Ubuntu oldest/latest variables to bare 24.04/26.04 VM queues; updates WASM oldest container tag to 24.04.
.github/skills/update-os-coverage/SKILL.md Updates documentation to validate prereqs container tags via the MCR registry tag list and explains why image-info may be stale.

@richlander

Copy link
Copy Markdown
Member Author

This PR effectively reverts (by design) this prior change: #125535

@github-actions

Copy link
Copy Markdown
Contributor

Copilot Code Review

Holistic Assessment

Motivation: Justified — restores the repo's intended bare-VM testing policy for Ubuntu now that 24.04 and 26.04 Helix VMs are available, removing the temporary container-on-AzureLinux workaround. Tracked in #125748.

Approach: Correct — straightforward slot-by-slot replacement from container references to bare VM queue names, with WASM intentionally kept on containers (toolchain image required). Documentation updates to the update-os-coverage SKILL.md are a reasonable scope addition given the image-info publishing flux.

Summary: ✅ LGTM. The changes are syntactically consistent with existing patterns, well-scoped, and clearly documented. Queue names follow established conventions (Ubuntu.XXYY.{Amd64|ArmArch}.Open for public, without .Open for internal). Residual 22.04 usage (Android, SuperPMI) is explicitly called out as tracked separately.


Detailed Findings

Detailed Findings

✅ Queue name consistency — Bare VM format matches codebase conventions

All new bare VM values (Ubuntu.2404.Amd64.Open, Ubuntu.2404.Amd64, Ubuntu.2604.Amd64.Open, Ubuntu.2404.ArmArch.Open, Ubuntu.2604.ArmArch.Open) follow the exact naming patterns used elsewhere in helix-platforms.yml (e.g., AzureLinux.3.Amd64.Open, OSX.26.Arm64.Open). Internal variants correctly drop the .Open suffix.

✅ WASM container correctly stays containerized — Version bump from 22.04 → 24.04 is appropriate

helix_browser_wasm_oldest retains the (QueueAlias)HostQueue@container format, correctly recognizing that WASM testing requires the WebAssembly toolchain image. The container tag ubuntu-24.04-helix-webassembly-amd64 is stated as verified.

✅ helix-queues-setup.yml — CoreCLR primary distro change is consistent

The CoreCLR primary distro moves from a container+digest reference to bare Ubuntu.2604.Amd64.Open, matching the helix_linux_x64_ubuntu_latest variable in helix-platforms.yml. The Mono path intentionally retains its container reference per commit 280ff3d ("Keep Mono path on Ubuntu 26.04 container").

✅ SKILL.md documentation — Reasonable pragmatic update

Shifting verification guidance from image-info JSON to the MCR registry tag list is appropriate given the documented publishing instability (dotnet/docker-tools#2142). The warning callout clearly marks this as transitional and instructs revisiting once the ORAS-based solution ships.

💡 Minor observation — sha256 digest loss in helix-queues-setup.yml

The previous CoreCLR primary distro had a @sha256:... digest pin. Since this is now a bare VM (no container image), the pin is N/A. No action needed, but noting for awareness that other distro entries in the same block retain digest pins for their containers.

Note

This review was created by GitHub Copilot.

Generated by Code Review for issue #129863 · ● 18.3M ·

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

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants