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