• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Docker image tag helper templates
2
3.incorporate-templates-commit:
4  variables:
5    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
6
7.incorporate-base-tag+templates-commit:
8  variables:
9    FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
10    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
11
12.set-image:
13  extends:
14    - .incorporate-templates-commit
15  variables:
16    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
17  image: "$MESA_IMAGE"
18
19.set-image-base-tag:
20  extends:
21    - .set-image
22    - .incorporate-base-tag+templates-commit
23  variables:
24    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
25
26# Build the CI docker images.
27#
28# MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the
29# image doesn't exist yet, the container stage job generates it.
30#
31# In order to generate a new image, one should generally change the tag.
32# While removing the image from the registry would also work, that's not
33# recommended except for ephemeral images during development: Replacing
34# an image after a significant amount of time might pull in newer
35# versions of gcc/clang or other packages, which might break the build
36# with older commits using the same tag.
37#
38# After merging a change resulting in generating a new image to the
39# main repository, it's recommended to remove the image from the source
40# repository's container registry, so that the image from the main
41# repository's registry will be used there as well.
42
43.debian-container-version:
44  variables:
45    FDO_DISTRIBUTION_VERSION: bookworm-slim
46
47.debian-container:
48  extends:
49    - .fdo.container-build@debian
50    - .container
51    - .debian-container-version
52
53.container:
54  stage: container
55  extends:
56    - .container+build-rules
57    - .incorporate-templates-commit
58  variables:
59    FDO_REPO_SUFFIX: $CI_JOB_NAME
60    FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/container_job_trampoline.sh "${CI_JOB_NAME}"'
61    # no need to pull the whole repo to build the container image
62    GIT_STRATEGY: none
63
64.use-base-image:
65  extends:
66    - .container
67    - .incorporate-base-tag+templates-commit
68
69# Debian based x86_64 build image base
70debian/x86_64_build-base:
71  extends:
72    - .debian-container
73  variables:
74    MESA_IMAGE_TAG: &debian-x86_64_build-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
75
76.use-debian/x86_64_build-base:
77  extends:
78    - .fdo.container-build@debian
79    - .debian-container-version
80    - .use-base-image
81  variables:
82    MESA_BASE_IMAGE: ${DEBIAN_X86_64_BUILD_BASE_IMAGE}
83    MESA_BASE_TAG: *debian-x86_64_build-base
84    MESA_ARTIFACTS_BASE_TAG: *debian-x86_64_build-base
85  needs:
86    - debian/x86_64_build-base
87
88# Debian based x86_64 main build image
89debian/x86_64_build:
90  extends:
91    - .use-debian/x86_64_build-base
92  variables:
93    MESA_IMAGE_TAG: &debian-x86_64_build ${DEBIAN_BUILD_TAG}
94
95.use-debian/x86_64_build:
96  extends:
97    - .set-image-base-tag
98  variables:
99    MESA_BASE_TAG: *debian-x86_64_build-base
100    MESA_IMAGE_PATH: ${DEBIAN_X86_64_BUILD_IMAGE_PATH}
101    MESA_IMAGE_TAG: *debian-x86_64_build
102  needs:
103    - debian/x86_64_build
104
105# Debian based x86_32 cross-build image
106debian/x86_32_build:
107  extends:
108    - .use-debian/x86_64_build-base
109  variables:
110    MESA_IMAGE_TAG: &debian-x86_32_build ${DEBIAN_BUILD_TAG}
111
112.use-debian/x86_32_build:
113  extends:
114    - .set-image-base-tag
115  variables:
116    MESA_BASE_TAG: *debian-x86_64_build-base
117    MESA_IMAGE_PATH: "debian/x86_32_build"
118    MESA_IMAGE_TAG: *debian-x86_32_build
119  needs:
120    - debian/x86_32_build
121
122# Debian based ppc64el cross-build image
123debian/ppc64el_build:
124  extends:
125    - .use-debian/x86_64_build-base
126  variables:
127    MESA_IMAGE_TAG: &debian-ppc64el_build ${DEBIAN_BUILD_TAG}
128
129.use-debian/ppc64el_build:
130  extends:
131    - .set-image-base-tag
132  variables:
133    MESA_BASE_TAG: *debian-x86_64_build-base
134    MESA_IMAGE_PATH: "debian/ppc64el_build"
135    MESA_IMAGE_TAG: *debian-ppc64el_build
136  needs:
137    - debian/ppc64el_build
138
139# Debian based s390x cross-build image
140debian/s390x_build:
141  extends:
142    - .use-debian/x86_64_build-base
143  variables:
144    MESA_IMAGE_TAG: &debian-s390x_build ${DEBIAN_BUILD_TAG}
145
146.use-debian/s390x_build:
147  extends:
148    - .set-image-base-tag
149  variables:
150    MESA_BASE_TAG: *debian-x86_64_build-base
151    MESA_IMAGE_PATH: "debian/s390x_build"
152    MESA_IMAGE_TAG: *debian-s390x_build
153  needs:
154    - debian/s390x_build
155
156# Android NDK cross-build image
157.android-variables:
158  variables:
159    ANDROID_SDK_VERSION: 33
160    ANDROID_NDK: android-ndk-r25b
161    ANDROID_LLVM_VERSION: llvmorg-18.1.8
162    ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20241219
163
164debian/android_build:
165  extends:
166    - .android-variables
167    - .use-debian/x86_64_build-base
168  variables:
169    MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
170
171.use-debian/android_build:
172  extends:
173    - .android-variables
174    - .set-image-base-tag
175  variables:
176    MESA_BASE_TAG: *debian-x86_64_build-base
177    MESA_IMAGE_PATH: "debian/android_build"
178    MESA_IMAGE_TAG: *debian-android_build
179  needs:
180    - debian/android_build
181
182# Debian based x86_64 test image base
183debian/x86_64_test-base:
184  extends:
185    - .debian-container
186  variables:
187    MESA_IMAGE_TAG: &debian-x86_64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}"
188
189.use-debian/x86_64_test-base:
190  extends:
191    - .fdo.container-build@debian
192    - .debian-container-version
193    - .use-base-image
194  variables:
195    MESA_BASE_IMAGE: ${DEBIAN_X86_64_TEST_BASE_IMAGE}
196    MESA_BASE_TAG: *debian-x86_64_test-base
197  needs:
198    - debian/x86_64_test-base
199
200# Debian based aarch64 test image base
201debian/arm64_test-base:
202  tags:
203    - aarch64
204  extends:
205    - .debian-container
206  variables:
207    MESA_IMAGE_TAG: &debian-arm64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
208
209.use-debian/arm64_test-base:
210  tags:
211    - aarch64
212  extends:
213    - .fdo.container-build@debian
214    - .debian-container-version
215    - .use-base-image
216  variables:
217    MESA_BASE_IMAGE: ${DEBIAN_ARM64_TEST_BASE_IMAGE}
218    MESA_BASE_TAG: *debian-arm64_test-base
219  needs:
220    - debian/arm64_test-base
221
222# Debian based x86_64 test image for GL
223debian/x86_64_test-gl:
224  extends: .use-debian/x86_64_test-base
225  variables:
226    MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG}
227
228.use-debian/x86_64_test-gl:
229  extends:
230    - .set-image-base-tag
231  variables:
232    MESA_BASE_TAG: *debian-x86_64_test-base
233    MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_IMAGE_GL_PATH}
234    MESA_IMAGE_TAG: *debian-x86_64_test-gl
235  needs:
236    - debian/x86_64_test-gl
237
238# Debian based x86_64 test image for VK
239debian/x86_64_test-vk:
240  extends: .use-debian/x86_64_test-base
241  variables:
242    MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG}
243
244.use-debian/x86_64_test-vk:
245  extends:
246    - .set-image-base-tag
247  variables:
248    MESA_BASE_TAG: *debian-x86_64_test-base
249    MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_IMAGE_VK_PATH}
250    MESA_IMAGE_TAG: *debian-x86_64_test-vk
251  needs:
252    - debian/x86_64_test-vk
253
254# Debian based x86_64 test image for Android
255.debian/x86_64_test-android:
256  extends:
257    - .android-variables
258    - .use-debian/x86_64_test-base
259  variables:
260    MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG}
261
262.use-debian/x86_64_test-android:
263  extends:
264    - .set-image-base-tag
265  variables:
266    MESA_BASE_TAG: *debian-x86_64_test-base
267    MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH}
268    MESA_IMAGE_TAG: *debian-x86_64_test-android
269  needs:
270    - debian/x86_64_test-android
271
272# Debian-based x86_64 image to run Python utilities
273debian/x86_64_pyutils:
274  extends:
275    - .debian-container
276  variables:
277    MESA_IMAGE_TAG: &debian-x86_64_pyutils "${DEBIAN_PYUTILS_TAG}"
278
279.use-debian/x86_64_pyutils:
280  extends:
281    - .fdo.container-build@debian
282    - .debian-container-version
283    - .set-image
284  variables:
285    MESA_IMAGE_PATH: ${DEBIAN_PYUTILS_IMAGE}
286    MESA_IMAGE_TAG: *debian-x86_64_pyutils
287  needs:
288    - debian/x86_64_pyutils
289
290# Debian based aarch64 test image for GL
291debian/arm64_test-gl:
292  tags:
293    - aarch64
294  extends: .use-debian/arm64_test-base
295  variables:
296    MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG}
297
298.use-debian/arm64_test-gl:
299  tags:
300    - aarch64
301  extends:
302    - .set-image-base-tag
303  variables:
304    MESA_BASE_TAG: *debian-arm64_test-base
305    MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_GL_PATH}
306    MESA_IMAGE_TAG: *debian-arm64_test-gl
307  needs:
308    - debian/arm64_test-gl
309
310# Debian based aarch64 test image for VK
311debian/arm64_test-vk:
312  tags:
313    - aarch64
314  extends: .use-debian/arm64_test-base
315  variables:
316    MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG}
317
318.use-debian/arm64_test-vk:
319  tags:
320    - aarch64
321  extends:
322    - .set-image-base-tag
323  variables:
324    MESA_BASE_TAG: *debian-arm64_test-base
325    MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_VK_PATH}
326    MESA_IMAGE_TAG: *debian-arm64_test-vk
327  needs:
328    - debian/arm64_test-vk
329
330# Debian based ARM build image
331debian/arm64_build:
332  extends:
333    - .fdo.container-build@debian
334    - .container
335    - .debian-container-version
336  tags:
337    - aarch64
338  variables:
339    MESA_IMAGE_TAG: &debian-arm64_build "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
340
341.use-debian/arm64_build:
342  extends:
343    - .set-image
344  variables:
345    MESA_IMAGE_PATH: "debian/arm64_build"
346    MESA_IMAGE_TAG: *debian-arm64_build
347    MESA_ARTIFACTS_TAG: *debian-arm64_build
348  needs:
349    - debian/arm64_build
350
351
352# Alpine based x86_64 build image
353.alpine/x86_64_build-base:
354  extends:
355    - .fdo.container-build@alpine
356    - .container
357  variables:
358    FDO_DISTRIBUTION_VERSION: "edge"  # switch to 3.20 when gets released
359    FDO_BASE_IMAGE: alpine:$FDO_DISTRIBUTION_VERSION  # since cbuild ignores it
360
361# Alpine based x86_64 build image
362alpine/x86_64_build:
363  extends:
364    - .alpine/x86_64_build-base
365  variables:
366    MESA_IMAGE_TAG: &alpine-x86_64_build ${ALPINE_X86_64_BUILD_TAG}
367    LLVM_VERSION: &alpine-llvm_version 19
368  rules:
369    # Note: the next three lines must remain in that order, so that the rules
370    # in `linkcheck-docs` catch nightly pipelines before the rules in `pages`
371    # exclude them.
372    - !reference [linkcheck-docs, rules]
373    - !reference [pages, rules]
374    - !reference [test-docs, rules]
375    - !reference [.container, rules]
376
377.use-alpine/x86_64_build:
378  extends:
379    - .set-image
380  variables:
381    MESA_IMAGE_PATH: "alpine/x86_64_build"
382    MESA_IMAGE_TAG: *alpine-x86_64_build
383    LLVM_VERSION: *alpine-llvm_version
384  needs:
385    - alpine/x86_64_build
386
387# Alpine based x86_64 image for LAVA SSH dockerized client
388alpine/x86_64_lava_ssh_client:
389  extends:
390    - .alpine/x86_64_build-base
391  variables:
392    MESA_IMAGE_TAG: &alpine-x86_64_lava_ssh_client ${ALPINE_X86_64_LAVA_SSH_TAG}
393
394# Fedora based x86_64 build image
395fedora/x86_64_build:
396  extends:
397    - .fdo.container-build@fedora
398    - .container
399  variables:
400    FDO_DISTRIBUTION_VERSION: 41
401    MESA_IMAGE_TAG: &fedora-x86_64_build ${FEDORA_X86_64_BUILD_TAG}
402
403.use-fedora/x86_64_build:
404  extends:
405    - .set-image
406  variables:
407    MESA_IMAGE_PATH: "fedora/x86_64_build"
408    MESA_IMAGE_TAG: *fedora-x86_64_build
409  needs:
410    - fedora/x86_64_build
411
412# Get firmware directly rather than using package versions.
413# Change KERNEL_ROOTFS_TAG to add firmware changes.
414# FIRMWARE_FILES is a list of json files arranged by vendor in .gitlab-ci/firmware/*
415.firmware_x86_64:
416  variables:
417    FIRMWARE_FILES: |
418      .gitlab-ci/firmware/i915/mtl-fw.json
419
420.firmware_arm64:
421  variables:
422    FIRMWARE_FILES: |
423      .gitlab-ci/firmware/arm/mali/arch10.8/mali-fw.json
424
425.firmware_arm32:
426  variables:
427    FIRMWARE_FILES: |
428
429.kernel+rootfs:
430  extends:
431    - .container+build-rules
432    - .debian-container-version
433  stage: container
434  timeout: 90m
435  variables:
436    GIT_STRATEGY: fetch
437    MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG}
438    DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
439  script:
440    - .gitlab-ci/container/lava_build.sh
441
442kernel+rootfs_x86_64:
443  extends:
444    - .use-debian/x86_64_build-base
445    - .kernel+rootfs
446    - .firmware_x86_64
447  image: "$FDO_BASE_IMAGE"
448  variables:
449    DEBIAN_ARCH: "amd64"
450    DISTRIBUTION_TAG: &distribution-tag-x86_64 "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
451
452kernel+rootfs_arm64:
453  extends:
454    - .use-debian/arm64_build
455    - .kernel+rootfs
456    - .firmware_arm64
457  tags:
458    - aarch64
459  variables:
460    DEBIAN_ARCH: "arm64"
461
462kernel+rootfs_arm32:
463  extends:
464    - kernel+rootfs_arm64
465    - .firmware_arm32
466  variables:
467    DEBIAN_ARCH: "armhf"
468
469# Cannot use anchors defined here from included files, so use extends: instead
470.use-kernel+rootfs-arm:
471  variables:
472    DISTRIBUTION_TAG: *distribution-tag-arm
473    MESA_ROOTFS_TAG: *kernel-rootfs
474
475.use-kernel+rootfs-x86_64:
476  variables:
477    DISTRIBUTION_TAG: *distribution-tag-x86_64
478    MESA_ROOTFS_TAG: *kernel-rootfs
479
480# x86_64 image with ARM64 & ARM32 kernel & rootfs for baremetal testing
481.debian/baremetal_arm_test:
482  extends:
483    - .fdo.container-build@debian
484    - .container
485    - .debian-container-version
486    # Don't want the .container rules
487    - .container+build-rules
488  variables:
489    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
490    ARTIFACTS_PREFIX: "https://${S3_HOST}/${S3_KERNEL_BUCKET}"
491    ARTIFACTS_SUFFIX: "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
492    MESA_ARTIFACTS_TAG: *debian-arm64_build
493    MESA_ROOTFS_TAG: *kernel-rootfs
494
495debian/baremetal_arm32_test:
496  extends:
497    - .debian/baremetal_arm_test
498  needs:
499    - kernel+rootfs_arm32
500  variables:
501    MESA_IMAGE_TAG: &debian-arm32_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
502
503debian/baremetal_arm64_test:
504  extends:
505    - .debian/baremetal_arm_test
506  needs:
507    - kernel+rootfs_arm64
508  variables:
509    MESA_IMAGE_TAG: &debian-arm64_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
510
511.use-debian/baremetal_arm_test:
512  variables:
513    MESA_ROOTFS_TAG: *kernel-rootfs
514
515.use-debian/baremetal_arm32_test:
516  image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
517  extends:
518    - .use-debian/baremetal_arm_test
519  variables:
520    MESA_IMAGE_PATH: "debian/baremetal_arm32_test"
521    MESA_IMAGE_TAG: *debian-arm32_test
522  needs:
523    - debian/baremetal_arm_test
524
525.use-debian/baremetal_arm64_test:
526  image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
527  extends:
528    - .use-debian/baremetal_arm_test
529  variables:
530    MESA_IMAGE_PATH: "debian/baremetal_arm64_test"
531    MESA_IMAGE_TAG: *debian-arm64_test
532  needs:
533    - debian/baremetal_arm_test
534
535# Native Windows docker builds
536#
537# Unlike the above Linux-based builds - including MinGW builds which
538# cross-compile for Windows - which use the freedesktop ci-templates, we
539# cannot use the same scheme here. As Windows lacks support for
540# Docker-in-Docker, and Podman does not run natively on Windows, we have
541# to open-code much of the same ourselves.
542#
543# This is achieved by first running in a native Windows shell instance
544# (host PowerShell) in the container stage to build and push the image,
545# then in the build stage by executing inside Docker.
546
547.windows-docker-msvc:
548  variables:
549    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}"
550    MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}"
551  extends:
552    - .windows-docker-tags
553
554.windows_container_build:
555  inherit:
556    default: [retry]
557  extends:
558    - .container
559    - .windows-docker-msvc
560    - .windows-shell-tags
561  rules:
562    - !reference [.common-rules, rules]
563    - !reference [.microsoft-farm-container-rules, rules]
564    - !reference [.container+build-rules, rules]
565  variables:
566    GIT_STRATEGY: fetch # we do actually need the full repository though
567    MESA_BASE_IMAGE: None
568  script:
569    - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE ${DOCKERFILE} ${MESA_BASE_IMAGE}
570
571windows_msvc:
572  inherit:
573    default: [retry]
574  extends:
575    - .windows_container_build
576  variables:
577    MESA_IMAGE_PATH: &windows_msvc_image_path ${WINDOWS_X64_MSVC_PATH}
578    MESA_IMAGE_TAG: ${WINDOWS_X64_MSVC_TAG}
579    DOCKERFILE: Dockerfile_msvc
580    MESA_BASE_IMAGE: "mcr.microsoft.com/windows/server:ltsc2022"
581
582windows_build_msvc:
583  inherit:
584    default: [retry]
585  extends:
586    - .windows_container_build
587  rules:
588    - !reference [.common-rules, rules]
589    - !reference [.microsoft-farm-rules, rules]
590    - !reference [.container+build-rules, rules]
591  variables:
592    MESA_IMAGE_PATH: &windows_build_image_path ${WINDOWS_X64_BUILD_PATH}
593    MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_BUILD_TAG}
594    DOCKERFILE: Dockerfile_build
595    MESA_BASE_IMAGE_PATH: *windows_msvc_image_path
596    MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${WINDOWS_X64_MSVC_TAG}"
597  timeout: 2h 30m # LLVM takes ages
598  needs:
599    - windows_msvc
600
601windows_test_msvc:
602  inherit:
603    default: [retry]
604  extends:
605    - .windows_container_build
606  rules:
607    - !reference [.common-rules, rules]
608    - !reference [.microsoft-farm-rules, rules]
609    - !reference [.container+build-rules, rules]
610  variables:
611    MESA_IMAGE_PATH: &windows_test_image_path ${WINDOWS_X64_TEST_PATH}
612    MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_TEST_TAG}
613    DOCKERFILE: Dockerfile_test
614    MESA_BASE_IMAGE_PATH: *windows_msvc_image_path
615    MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${WINDOWS_X64_MSVC_TAG}"
616  timeout: 2h 30m
617  needs:
618    - windows_msvc
619
620.use-windows_build_msvc:
621  inherit:
622    default: [retry]
623  extends: .windows-docker-msvc
624  image: "$MESA_IMAGE"
625  variables:
626    MESA_IMAGE_PATH: *windows_build_image_path
627    MESA_IMAGE_TAG: *windows_build_image_tag
628  needs:
629    - windows_build_msvc
630
631.use-windows_test_msvc:
632  inherit:
633    default: [retry]
634  extends: .windows-docker-msvc
635  image: "$MESA_IMAGE"
636  variables:
637    MESA_IMAGE_PATH: *windows_test_image_path
638    MESA_IMAGE_TAG: *windows_test_image_tag
639