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
windowstarget matrix indockerfiles/runner-helper/docker-bake.hclwith the two new nanoserver entries. - Updates
.gitlab/ci/build.gitlab-ci.ymlso the existingprebuilt helper images windows 2025andprebuilt helper images windows 2025 arm64jobs build and bundle the new images. - Adds matching entries to
scripts/pusher/helper-images.json(windows-nanoserver-ltsc2025-x86_64andwindows-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?
- Run the pipeline and confirm the
prebuilt helper images windows 2025andprebuilt helper images windows 2025 arm64jobs succeed and produce the newwindows-nanoserver-ltsc2025-x86_64andwindows-nanoserver-ltsc2025-arm64images. - Verify CI artifact size remains under the upload limit (watch for
413 Request Entity Too Largeas seen in !6033 (merged)); split per-arch further if needed. - Inspect the published arm64 nanoserver image to confirm it bundles the native arm64
gitlab-runner-helper.exe(noTARGETARCH = "amd64"override, nox86_64-binary-arm64-platform-...pusher entry). - Run a docker-windows job using
helper_image: ...windows-nanoserver-ltsc2025-arm64on a Windows ARM64 host end-to-end. - Run a docker-windows job using
helper_image: ...windows-nanoserver-ltsc2025on a Windows amd64 host end-to-end. - Confirm the new images appear in the supported helper image matrix in the docs.
What are the relevant issue numbers?
- Closes #39418
- Parent: #39182 (closed)
- Image-size context: #39333
- Depends on: !6697 (merged) (MR 2, #39416 (closed)), !6716 (merged) (MR 3, #39417 (closed))
- Previous MR: !6033 (merged)
- Related main-binary MR: !6495 (merged)
- Related base-image work: base-images!88, base-images!111