Add nanoserver:ltsc2025 and nanoserver:ltsc2025-arm64 helper images

What does this MR do?

Adds nanoserver:ltsc2025 (amd64) and nanoserver:ltsc2025-arm64 variants of the gitlab-runner-helper container image, mirroring the servercore:ltsc2025 work shipped in !6033 (merged). Specifically:

  • Extends the windows target matrix in dockerfiles/runner-helper/docker-bake.hcl with the two new nanoserver entries.
  • Updates .gitlab/ci/build.gitlab-ci.yml so the existing prebuilt helper images windows 2025 and prebuilt helper images windows 2025 arm64 jobs build and bundle the new images.
  • Adds matching entries to scripts/pusher/helper-images.json (windows-nanoserver-ltsc2025-x86_64 and windows-nanoserver-ltsc2025-arm64), with the arm64 entry pointing at the native arm64 helper binary produced by !6697 (merged) and wired into the arm64 image by !6716 (merged) (no amd64-via-emulation override).

Why was this MR needed?

This is MR 4 of the 5-MR plan for full Windows ARM64 support in the docker-windows executor (parent issue #39182 (closed)). Servercore helper images on ARM64 are large (~2.5 GB); nanoserver is ~10× smaller (~270 MB), which is what makes the Windows ARM64 helper image size comparable to the Linux variants tracked in #39333.

Nanoserver was deliberately deferred until after MR 2 (!6697 (merged), native arm64 helper binary, tracked in #39416 (closed)) and MR 3 (!6716 (merged), arm64 servercore cutover, tracked in #39417 (closed)) because nanoserver is too minimal to emulate amd64 binaries on ARM64; a native arm64 helper binary is the only viable path. Note that only ltsc2025 is added: Microsoft does not publish nanoserver:ltsc2019-arm64 or nanoserver:ltsc2022-arm64 base images.

What's the best way to test this MR?

  1. Run the pipeline and confirm the prebuilt helper images windows 2025 and prebuilt helper images windows 2025 arm64 jobs succeed and produce the new windows-nanoserver-ltsc2025-x86_64 and windows-nanoserver-ltsc2025-arm64 images.
  2. Verify CI artifact size remains under the upload limit (watch for 413 Request Entity Too Large as seen in !6033 (merged)); split per-arch further if needed.
  3. Inspect the published arm64 nanoserver image to confirm it bundles the native arm64 gitlab-runner-helper.exe (no TARGETARCH = "amd64" override, no x86_64-binary-arm64-platform-... pusher entry).
  4. Run a docker-windows job using helper_image: ...windows-nanoserver-ltsc2025-arm64 on a Windows ARM64 host end-to-end.
  5. Run a docker-windows job using helper_image: ...windows-nanoserver-ltsc2025 on a Windows amd64 host end-to-end.
  6. Confirm the new images appear in the supported helper image matrix in the docs.

What are the relevant issue numbers?

Merge request reports

Loading