Add native windows/arm64 helper binary build target

What does this MR do?

Adds a native windows/arm64 build target for gitlab-runner-helper.exe and publishes the resulting binary to the release directory alongside the existing windows/amd64 helper.

Changes

  • Makefile.runner_helper.mk — Add gitlab-runner-helper.windows-arm64.exe to the BINARIES list so the helper is compiled natively for Windows arm64 alongside the existing windows-amd64 target.
  • ci/release_dir — Map out/binaries/gitlab-runner-helper/gitlab-runner-helper.windows-arm64.exeout/release/binaries/gitlab-runner-helper/gitlab-runner-helper.arm64-windows.exe so the new binary is included in S3 releases following the same <arch>-windows.exe naming convention as the amd64 helper.

The native arm64 main binary (gitlab-runner.exe) is already covered by !6495 (merged) (merged 2026-03-11), so this MR scopes down to just the helper executable as the issue allows.

Why was this MR needed?

The parent issue #39182 (closed) reported that running CI/CD jobs on Windows ARM64 with the docker-windows executor fails because amd64-based Windows container images cannot load on ARM64 hosts (hcs::System::Start ... 0xc0370106). The first slice, !6033 (merged), shipped LTSC2025 and LTSC2025-arm64 helper images as a stop-gap, but the arm64 helper image still bundles the amd64 gitlab-runner-helper.exe and relies on Windows amd64-on-arm64 emulation to run it.

That stop-gap has known limits:

This MR produces the native arm64 helper binary that unblocks the proper fix. It is MR 2 of the 5-MR plan agreed in #39182, and is a prerequisite for MR 3 (swap the bundled binary), MR 4 (nanoserver arm64), and MR 5 (host-arch detection).

Closes #39416 (closed).

Out of scope (per parent plan)

  • Swapping the bundled binary in the arm64 helper image — MR 3.
  • nanoserver:ltsc2025-arm64 / ltsc2025-amd64 helper images — MR 4.
  • Runtime architecture detection in gitlab-runner.exeMR 5.
  • baseImage25H2 constant in helpers/container/helperimage/windows_info.go — deferred to MR 5 (review note).
  • .instance-windows-2025-arm64 runner tags, windows25H2 job templates, and ci/.test-failures.servercore25H2.txt — deferred pending an arm64 Windows runner manager.

What's the best way to test this MR?

  • make helper-bin produces out/binaries/gitlab-runner-helper/gitlab-runner-helper.windows-arm64.exe.
  • The ci/release_dir mapping places the binary at out/release/binaries/gitlab-runner-helper/gitlab-runner-helper.arm64-windows.exe for S3 upload.

What are the relevant issue numbers?

Merge request reports

Loading