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