# Docker image tag helper templates .incorporate-templates-commit: variables: FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}" .incorporate-base-tag+templates-commit: variables: FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}" FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}" .set-image: extends: - .incorporate-templates-commit variables: MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}" image: "$MESA_IMAGE" .set-image-base-tag: extends: - .set-image - .incorporate-base-tag+templates-commit variables: MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}" # Build the CI docker images. # # MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the # image doesn't exist yet, the container stage job generates it. # # In order to generate a new image, one should generally change the tag. # While removing the image from the registry would also work, that's not # recommended except for ephemeral images during development: Replacing # an image after a significant amount of time might pull in newer # versions of gcc/clang or other packages, which might break the build # with older commits using the same tag. # # After merging a change resulting in generating a new image to the # main repository, it's recommended to remove the image from the source # repository's container registry, so that the image from the main # repository's registry will be used there as well. .debian-container-version: variables: FDO_DISTRIBUTION_VERSION: bookworm-slim .debian-container: extends: - .fdo.container-build@debian - .container - .debian-container-version .container: stage: container timeout: 1h extends: - .container+build-rules - .incorporate-templates-commit tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 variables: FDO_REPO_SUFFIX: $CI_JOB_NAME FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/container_job_trampoline.sh "${CI_JOB_NAME}"' # no need to pull the whole repo to build the container image GIT_STRATEGY: none .container-builds-angle: variables: ANGLE_TAG: "${CONDITIONAL_BUILD_ANGLE_TAG}" .container-builds-android: extends: - .container-builds-angle variables: # CI_BUILD_COMPONENTS is a space-separated list of components used during early tag checks # If this job inherits from multiple .container-builds-*, it needs to combine them # e.g: inherits from .container-builds-angle and .container-builds-piglit # should make CI_BUILD_COMPONENTS="angle piglit" CI_BUILD_COMPONENTS: "angle" .container-builds-x86_64: extends: - .container-builds-angle variables: CI_BUILD_COMPONENTS: "angle" .container-builds-arm64: extends: - .container-builds-angle variables: CI_BUILD_COMPONENTS: "angle" .use-base-image: extends: - .container - .incorporate-base-tag+templates-commit # Debian based x86_64 build image base debian/x86_64_build-base: extends: - .debian-container variables: MESA_IMAGE_TAG: &debian-x86_64_build-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" LLVM_VERSION: &debian-x86_64-llvm 19 .use-debian/x86_64_build-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .fdo.container-build@debian - .debian-container-version - .use-base-image variables: MESA_BASE_IMAGE: "debian/x86_64_build-base" MESA_BASE_TAG: *debian-x86_64_build-base MESA_ARTIFACTS_BASE_TAG: *debian-x86_64_build-base LLVM_VERSION: *debian-x86_64-llvm needs: - debian/x86_64_build-base # Debian based x86_64 main build image debian/x86_64_build: extends: - .use-debian/x86_64_build-base variables: MESA_IMAGE_TAG: &debian-x86_64_build ${DEBIAN_BUILD_TAG} LLVM_VERSION: *debian-x86_64-llvm .use-debian/x86_64_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_build-base MESA_IMAGE_PATH: "debian/x86_64_build" MESA_IMAGE_TAG: *debian-x86_64_build LLVM_VERSION: *debian-x86_64-llvm needs: - debian/x86_64_build # Debian based x86_32 cross-build image debian/x86_32_build: extends: - .use-debian/x86_64_build-base variables: MESA_IMAGE_TAG: &debian-x86_32_build ${DEBIAN_BUILD_TAG} .use-debian/x86_32_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_build-base MESA_IMAGE_PATH: "debian/x86_32_build" MESA_IMAGE_TAG: *debian-x86_32_build LLVM_VERSION: *debian-x86_64-llvm needs: - debian/x86_32_build # Debian based ppc64el cross-build image debian/ppc64el_build: extends: - .use-debian/x86_64_build-base variables: MESA_IMAGE_TAG: &debian-ppc64el_build ${DEBIAN_BUILD_TAG} LLVM_VERSION: &debian-ppc64el-llvm 15 # no LLVM packages for PPC .use-debian/ppc64el_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_build-base MESA_IMAGE_PATH: "debian/ppc64el_build" MESA_IMAGE_TAG: *debian-ppc64el_build LLVM_VERSION: *debian-ppc64el-llvm needs: - debian/ppc64el_build # Debian based s390x cross-build image debian/s390x_build: extends: - .use-debian/x86_64_build-base variables: MESA_IMAGE_TAG: &debian-s390x_build ${DEBIAN_BUILD_TAG} LLVM_VERSION: &debian-s390x-llvm 19 .use-debian/s390x_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_build-base MESA_IMAGE_PATH: "debian/s390x_build" MESA_IMAGE_TAG: *debian-s390x_build LLVM_VERSION: *debian-s390x-llvm needs: - debian/s390x_build # Android NDK cross-build image .android-variables: extends: - .container-builds-android variables: ANDROID_VERSION: 14 ANDROID_NDK_VERSION: "r27c" ANDROID_SDK_VERSION: 34 # Space-separated list of interesting CTS modules ANDROID_CTS_MODULES: CtsGraphicsTestCases ANDROID_LLVM_VERSION: llvmorg-19.1.7 ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20250324 # This can be confusing: LLVM_VERSION refers to the host LLVM toolchain # used (LLVM 19 in our Debian system), but ANDROID_LLVM_VERSION refers to # the cross-compiling LLVM toolchain used to build for the Android system. LLVM_VERSION: &debian-android-llvm 19 debian/android_build: extends: - .android-variables - .container-builds-android - .use-debian/x86_64_build-base variables: MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG} .use-debian/android_build: extends: - .android-variables - .set-image-base-tag tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 variables: MESA_BASE_TAG: *debian-x86_64_build-base MESA_IMAGE_PATH: "debian/android_build" MESA_IMAGE_TAG: *debian-android_build needs: - debian/android_build # Debian based ARM build image debian/arm64_build: extends: - .fdo.container-build@debian - .container - .debian-container-version tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 variables: MESA_IMAGE_TAG: &debian-arm64_build "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" LLVM_VERSION: &debian-arm64-llvm 19 .use-debian/arm64_build: extends: - .set-image tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 variables: MESA_IMAGE_PATH: "debian/arm64_build" MESA_IMAGE_TAG: *debian-arm64_build MESA_ARTIFACTS_TAG: *debian-arm64_build LLVM_VERSION: *debian-arm64-llvm needs: - debian/arm64_build # Alpine based x86_64 build image .alpine/x86_64_build-base: extends: - .fdo.container-build@alpine - .container variables: FDO_DISTRIBUTION_VERSION: "3.21" FDO_BASE_IMAGE: alpine:$FDO_DISTRIBUTION_VERSION # since cbuild ignores it # Alpine based x86_64 build image alpine/x86_64_build: extends: - .alpine/x86_64_build-base variables: MESA_IMAGE_TAG: &alpine-x86_64_build ${ALPINE_X86_64_BUILD_TAG} LLVM_VERSION: &alpine-llvm_version 19 rules: # Note: the next three lines must remain in that order, so that the rules # in `linkcheck-docs` catch nightly pipelines before the rules in `deploy-docs` # exclude them. - !reference [linkcheck-docs, rules] - !reference [deploy-docs, rules] - !reference [test-docs, rules] - !reference [.container, rules] .use-alpine/x86_64_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image variables: MESA_IMAGE_PATH: "alpine/x86_64_build" MESA_IMAGE_TAG: *alpine-x86_64_build LLVM_VERSION: *alpine-llvm_version needs: - alpine/x86_64_build # Alpine based x86_64 image for LAVA SSH dockerized client alpine/x86_64_lava_ssh_client: extends: - .alpine/x86_64_build-base variables: MESA_IMAGE_TAG: &alpine-x86_64_lava_ssh_client ${ALPINE_X86_64_LAVA_SSH_TAG} # Fedora based x86_64 build image fedora/x86_64_build: extends: - .fdo.container-build@fedora - .container variables: FDO_DISTRIBUTION_VERSION: 41 MESA_IMAGE_TAG: &fedora-x86_64_build ${FEDORA_X86_64_BUILD_TAG} LLVM_VERSION: &fedora-x86_64-llvm 19 .use-fedora/x86_64_build: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image variables: MESA_IMAGE_PATH: "fedora/x86_64_build" MESA_IMAGE_TAG: *fedora-x86_64_build LLVM_VERSION: *fedora-x86_64-llvm needs: - fedora/x86_64_build # Debian based x86_64 test image base debian/x86_64_test-base: extends: - .debian-container variables: MESA_IMAGE_TAG: &debian-x86_64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}" LLVM_VERSION: *debian-x86_64-llvm .use-debian/x86_64_test-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .fdo.container-build@debian - .debian-container-version - .use-base-image variables: MESA_BASE_IMAGE: "debian/x86_64_test-base" MESA_BASE_TAG: *debian-x86_64_test-base LLVM_VERSION: *debian-x86_64-llvm needs: - debian/x86_64_test-base # Debian based ARMv7/armhf test image base debian/arm32_test-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .debian-container - .firmware_arm32 variables: MESA_IMAGE_TAG: &debian-arm32_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" LLVM_VERSION: *debian-arm64-llvm FDO_DISTRIBUTION_PLATFORM: "linux/arm/v7" .use-debian/arm32_test-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .fdo.container-build@debian - .debian-container-version - .use-base-image variables: MESA_BASE_IMAGE: "debian/arm32_test-base" MESA_BASE_TAG: *debian-arm32_test-base LLVM_VERSION: *debian-arm64-llvm FDO_DISTRIBUTION_PLATFORM: "linux/arm/v7" needs: - debian/arm32_test-base # Debian based aarch64 test image base debian/arm64_test-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .debian-container variables: MESA_IMAGE_TAG: &debian-arm64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" LLVM_VERSION: *debian-arm64-llvm .use-debian/arm64_test-base: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .fdo.container-build@debian - .debian-container-version - .use-base-image variables: MESA_BASE_IMAGE: "debian/arm64_test-base" MESA_BASE_TAG: *debian-arm64_test-base LLVM_VERSION: *debian-arm64-llvm needs: - debian/arm64_test-base # Debian based x86_64 test image for GL debian/x86_64_test-gl: extends: .use-debian/x86_64_test-base variables: MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG} .use-debian/x86_64_test-gl: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_test-base MESA_IMAGE_PATH: "debian/x86_64_test-gl" MESA_IMAGE_TAG: *debian-x86_64_test-gl needs: - debian/x86_64_test-gl # Debian based x86_64 test image for VK debian/x86_64_test-vk: extends: .use-debian/x86_64_test-base variables: MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG} .use-debian/x86_64_test-vk: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_test-base MESA_IMAGE_PATH: "debian/x86_64_test-vk" MESA_IMAGE_TAG: *debian-x86_64_test-vk needs: - debian/x86_64_test-vk # Debian based x86_64 test image for Android debian/x86_64_test-android: extends: - .android-variables - .use-debian/x86_64_test-base variables: MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG} .use-debian/x86_64_test-android: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM extends: - .android-variables - .set-image-base-tag variables: MESA_BASE_TAG: *debian-x86_64_test-base MESA_IMAGE_PATH: "debian/x86_64_test-android" MESA_IMAGE_TAG: *debian-x86_64_test-android needs: - debian/x86_64_test-android # Debian-based x86_64 image to run Python utilities debian/x86_64_pyutils: extends: - .debian-container variables: MESA_IMAGE_TAG: &debian-x86_64_pyutils "${DEBIAN_PYUTILS_TAG}" .use-debian/x86_64_pyutils: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64 extends: - .fdo.container-build@debian - .debian-container-version - .set-image variables: MESA_IMAGE_PATH: "debian/x86_64_pyutils" MESA_IMAGE_TAG: *debian-x86_64_pyutils needs: - debian/x86_64_pyutils # Debian based ARMv7/armhf test image for GL debian/arm32_test-gl: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: .use-debian/arm32_test-base variables: MESA_IMAGE_TAG: &debian-arm32_test-gl ${DEBIAN_TEST_GL_TAG} .use-debian/arm32_test-gl: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-arm32_test-base MESA_IMAGE_PATH: "debian/arm32_test-gl" MESA_IMAGE_TAG: *debian-arm32_test-gl needs: - debian/arm32_test-gl # Debian based ARMv7/armhf test image for VK debian/arm32_test-vk: rules: - when: never # There are currently no arm32 VK jobs tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: .use-debian/arm32_test-base variables: MESA_IMAGE_TAG: &debian-arm32_test-vk ${DEBIAN_TEST_VK_TAG} .use-debian/arm32_test-vk: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-arm32_test-base MESA_IMAGE_PATH: "debian/arm32_test-vk" MESA_IMAGE_TAG: *debian-arm32_test-vk needs: - debian/arm32_test-vk # Debian based aarch64 test image for GL debian/arm64_test-gl: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .use-debian/arm64_test-base - .container-builds-arm64 variables: MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG} .use-debian/arm64_test-gl: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-arm64_test-base MESA_IMAGE_PATH: "debian/arm64_test-gl" MESA_IMAGE_TAG: *debian-arm64_test-gl needs: - debian/arm64_test-gl # Debian based aarch64 test image for VK debian/arm64_test-vk: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: .use-debian/arm64_test-base variables: MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG} .use-debian/arm64_test-vk: tags: - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64 extends: - .set-image-base-tag variables: MESA_BASE_TAG: *debian-arm64_test-base MESA_IMAGE_PATH: "debian/arm64_test-vk" MESA_IMAGE_TAG: *debian-arm64_test-vk needs: - debian/arm64_test-vk # Get firmware directly rather than using package versions. # Change KERNEL_ROOTFS_TAG to add firmware changes. # FIRMWARE_FILES is a list of json files arranged by vendor in .gitlab-ci/firmware/* .firmware_x86_64: variables: FIRMWARE_FILES: | .gitlab-ci/firmware/i915/adl-fw.json .gitlab-ci/firmware/i915/mtl-fw.json .firmware_arm64: variables: FIRMWARE_FILES: | .gitlab-ci/firmware/arm/mali/arch10.8/mali-fw.json .firmware_arm32: variables: FIRMWARE_FILES: | .kernel+rootfs: extends: - .container+build-rules - .debian-container-version stage: container timeout: 120m variables: GIT_STRATEGY: fetch MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG} DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}" script: - .gitlab-ci/container/lava_build.sh kernel+rootfs_x86_64: extends: - .use-debian/x86_64_build-base - .kernel+rootfs - .firmware_x86_64 - .container-builds-x86_64 image: "$FDO_BASE_IMAGE" variables: DEBIAN_ARCH: "amd64" DISTRIBUTION_TAG: &distribution-tag-x86_64 "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}" LLVM_VERSION: *debian-x86_64-llvm kernel+rootfs_arm64: extends: - .use-debian/arm64_build - .kernel+rootfs - .firmware_arm64 - .container-builds-arm64 variables: DEBIAN_ARCH: "arm64" LLVM_VERSION: *debian-arm64-llvm kernel+rootfs_arm32: extends: - kernel+rootfs_arm64 - .firmware_arm32 variables: DEBIAN_ARCH: "armhf" LLVM_VERSION: &debian-arm32-llvm 15 # no armhf builds for LLVM # Cannot use anchors defined here from included files, so use extends: instead .use-kernel+rootfs-arm: variables: DISTRIBUTION_TAG: *distribution-tag-arm MESA_ROOTFS_TAG: *kernel-rootfs .use-kernel+rootfs-x86_64: variables: DISTRIBUTION_TAG: *distribution-tag-x86_64 MESA_ROOTFS_TAG: *kernel-rootfs # x86_64 image with ARM64 & ARM32 kernel & rootfs for baremetal testing .debian/baremetal_arm_test: extends: - .fdo.container-build@debian - .container - .debian-container-version # Don't want the .container rules - .container+build-rules variables: FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}" ARTIFACTS_PREFIX: "https://${S3_HOST}/${S3_KERNEL_BUCKET}" ARTIFACTS_SUFFIX: "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}" MESA_ARTIFACTS_TAG: *debian-arm64_build MESA_ROOTFS_TAG: *kernel-rootfs debian/baremetal_arm32_test: extends: - .debian/baremetal_arm_test needs: - kernel+rootfs_arm32 variables: MESA_IMAGE_TAG: &debian-arm32_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" debian/baremetal_arm64_test: extends: - .debian/baremetal_arm_test needs: - kernel+rootfs_arm64 variables: MESA_IMAGE_TAG: &debian-arm64_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}" .use-debian/baremetal_arm_test: variables: MESA_ROOTFS_TAG: *kernel-rootfs .use-debian/baremetal_arm32_test: image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}" extends: - .use-debian/baremetal_arm_test variables: MESA_IMAGE_PATH: "debian/baremetal_arm32_test" MESA_IMAGE_TAG: *debian-arm32_test needs: - debian/baremetal_arm_test .use-debian/baremetal_arm64_test: image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}" extends: - .use-debian/baremetal_arm_test variables: MESA_IMAGE_PATH: "debian/baremetal_arm64_test" MESA_IMAGE_TAG: *debian-arm64_test needs: - debian/baremetal_arm_test # Native Windows docker builds # # Unlike the above Linux-based builds - including MinGW builds which # cross-compile for Windows - which use the freedesktop ci-templates, we # cannot use the same scheme here. As Windows lacks support for # Docker-in-Docker, and Podman does not run natively on Windows, we have # to open-code much of the same ourselves. # # This is achieved by first running in a native Windows shell instance # (host PowerShell) in the container stage to build and push the image, # then in the build stage by executing inside Docker. .windows-docker-msvc: variables: MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}" MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}" extends: - .windows-docker-tags .windows_container_build: inherit: default: [retry] extends: - .container - .windows-docker-msvc - .windows-shell-tags rules: - !reference [.common-rules, rules] - !reference [.microsoft-farm-container-rules, rules] - !reference [.container+build-rules, rules] variables: GIT_STRATEGY: fetch # we do actually need the full repository though MESA_BASE_IMAGE: None script: - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE ${DOCKERFILE} ${MESA_BASE_IMAGE} windows_msvc: inherit: default: [retry] extends: - .windows_container_build variables: MESA_IMAGE_PATH: &windows_msvc_image_path "windows/x86_64_msvc" MESA_IMAGE_TAG: ${WINDOWS_X64_MSVC_TAG} DOCKERFILE: Dockerfile_msvc MESA_BASE_IMAGE: "mcr.microsoft.com/windows/server:ltsc2022" windows_build_msvc: inherit: default: [retry] extends: - .windows_container_build rules: - !reference [.common-rules, rules] - !reference [.microsoft-farm-rules, rules] - !reference [.container+build-rules, rules] variables: MESA_IMAGE_PATH: &windows_build_image_path "windows/x86_64_build" MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_BUILD_TAG} DOCKERFILE: Dockerfile_build MESA_BASE_IMAGE_PATH: *windows_msvc_image_path MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${WINDOWS_X64_MSVC_TAG}" timeout: 2h 30m # LLVM takes ages needs: - windows_msvc windows_test_msvc: inherit: default: [retry] extends: - .windows_container_build rules: - !reference [.common-rules, rules] - !reference [.microsoft-farm-rules, rules] - !reference [.container+build-rules, rules] variables: MESA_IMAGE_PATH: &windows_test_image_path "windows/x86_64_test" MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_TEST_TAG} DOCKERFILE: Dockerfile_test MESA_BASE_IMAGE_PATH: *windows_msvc_image_path MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${WINDOWS_X64_MSVC_TAG}" timeout: 2h 30m needs: - windows_msvc .use-windows_build_msvc: inherit: default: [retry] extends: .windows-docker-msvc image: "$MESA_IMAGE" variables: MESA_IMAGE_PATH: *windows_build_image_path MESA_IMAGE_TAG: *windows_build_image_tag needs: - windows_build_msvc .use-windows_test_msvc: inherit: default: [retry] extends: .windows-docker-msvc image: "$MESA_IMAGE" variables: MESA_IMAGE_PATH: *windows_test_image_path MESA_IMAGE_TAG: *windows_test_image_tag