Auto-select arm64 Windows helper image on ARM64 hosts

What does this MR do?

Makes GitLab Runner architecture-aware when selecting the Windows helper image. The docker-windows executor now derives the helper image from both the host's Windows version and its CPU architecture (x86_64 or arm64), so a Windows Server 2025 (24H2) ARM64 host automatically receives the arm64 helper image with no manual helper_image override required.

This is MR 5 of 5 in the Windows ARM64 support plan and closes the parent issue #39182 (closed).

Key changes in helpers/container/helperimage/windows_info.go:

  • Replace the static helperImages / prebuiltImages maps (which hard-coded x86_64 and reused the servercore21H2 base image for V24H2) with an ltsc map (V1809 → ltsc2019, V21H2 → ltsc2022, V24H2 → ltsc2025). The image tag and prebuilt bundle name are now derived by pattern from the version and architecture.
  • Normalise the architecture reported by the Docker daemon / config (amd64, aarch64, etc.) to the canonical x86_64 / arm64 tokens. Any unrecognized or unspecified architecture resolves to x86_64, preserving the pre-existing behaviour.
  • Stop reusing the 21H2 base image for 24H2 hosts — V24H2 now maps to ltsc2025.
  • For arm64 on Windows Server 2019 / 2022 — where Microsoft publishes no arm64 base image — fall back to the x86_64 helper image, matching the behaviour before this change rather than introducing a new error path. Only Windows Server 2025 (24H2) resolves to an arm64 image.

Shared architecture constants are moved from linux_info.go to info.go so both OS builders can use them.

Why was this MR needed?

Previously the runner always served the x86_64 helper image on Windows and mapped Windows Server 2025 (24H2) back to the 21H2 base image. ARM64 customers had to set helper_image manually as a workaround during the #39182 (closed) rollout. With the native arm64 gitlab-runner.exe now available (!6495 (merged)), the runner can detect the host architecture and pick the correct image automatically.

Dependency

Assumes !6717 (merged) will be merged in (the docs reflect these changes too)

What are the relevant issue numbers?

Closes #39419 (closed), closes #39182 (closed).

Edited by Shanush Prema Thasarathan

Merge request reports

Loading