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_vs2019:
+ inherit:
+ default: false
+ extends:
+ - .windows_container_build
+ variables:
+ MESA_IMAGE_PATH: &windows_vs_image_path ${WINDOWS_X64_VS_PATH}
+ MESA_IMAGE_TAG: &windows_vs_image_tag ${WINDOWS_X64_VS_TAG}
+ DOCKERFILE: Dockerfile_vs
+ MESA_BASE_IMAGE: "mcr.microsoft.com/windows/server:ltsc2022"
+
windows_build_vs2019:
inherit:
default: false
extends:
- .windows_container_build
+ rules:
+ - if: '$MICROSOFT_FARM == "offline"'
+ when: never
+ - !reference [.ci-run-policy, rules]
variables:
MESA_IMAGE_PATH: &windows_build_image_path ${WINDOWS_X64_BUILD_PATH}
MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_BUILD_TAG}
DOCKERFILE: Dockerfile_build
+ MESA_BASE_IMAGE_PATH: *windows_vs_image_path
+ MESA_BASE_IMAGE_TAG: *windows_vs_image_tag
+ MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${MESA_BASE_IMAGE_TAG}"
timeout: 2h 30m # LLVM takes ages
+ needs:
+ - windows_vs2019
windows_test_vs2019:
inherit:
MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_BUILD_TAG}--${WINDOWS_X64_TEST_TAG}
DOCKERFILE: Dockerfile_test
# Right now this only needs the VS install to get DXIL.dll. Maybe see about decoupling this at some point
- MESA_BASE_IMAGE_PATH: *windows_build_image_path
- MESA_BASE_IMAGE_TAG: *windows_build_image_tag
+ MESA_BASE_IMAGE_PATH: *windows_vs_image_path
+ MESA_BASE_IMAGE_TAG: *windows_vs_image_tag
MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${MESA_BASE_IMAGE_TAG}"
needs:
- - windows_build_vs2019
+ - windows_vs2019
.use-windows_build_vs2019:
inherit:
FEDORA_X86_BUILD_TAG: "2022-04-24-spirv-tools-5"
KERNEL_ROOTFS_TAG: "2022-06-09-piglit-update"
+ WINDOWS_X64_VS_PATH: "windows/x64_vs"
+ WINDOWS_X64_VS_TAG: "2022-06-10-vs"
+
WINDOWS_X64_BUILD_PATH: "windows/x64_build"
- WINDOWS_X64_BUILD_TAG: "2022-27-05-server_2022"
+ WINDOWS_X64_BUILD_TAG: "2022-06-10-vs"
WINDOWS_X64_TEST_PATH: "windows/x64_test"
- WINDOWS_X64_TEST_TAG: "2022-07-06-server_2022"
+ WINDOWS_X64_TEST_TAG: "2022-06-10-vs"
# escape=`
-FROM mcr.microsoft.com/windows/server:ltsc2022
+ARG base_image
+FROM ${base_image}
-# https://www.thomasmaurer.ch/2019/07/how-to-install-and-update-powershell-7/
-# Wrapping the following command in cmd.exe
-# iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
-RUN powershell -ExecutionPolicy RemoteSigned -Command "$ErrorActionPreference = 'Stop'; iex ""& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"""
-
-# Make sure any failure in PowerShell scripts is fatal
-SHELL ["pwsh", "-ExecutionPolicy", "RemoteSigned", "-Command", "$ErrorActionPreference = 'Stop';"]
-
-COPY mesa_deps_vs2019.ps1 C:\
-RUN C:\mesa_deps_vs2019.ps1
-COPY mesa_vs_init.ps1 C:\
-
-ENV VULKAN_SDK_VERSION='1.3.211.0'
-COPY mesa_deps_choco.ps1 C:\
-RUN C:\mesa_deps_choco.ps1
COPY mesa_deps_build.ps1 C:\
RUN C:\mesa_deps_build.ps1
+
+# When building, `--isolation=process` can leverage all cores and memory
+# docker build --isolation=process -f .\Dockerfile_build -t mesa_dep --build-arg base_image=mesa_vs .
+
--- /dev/null
+# escape=`
+
+ARG base_image
+FROM ${base_image}
+
+# https://www.thomasmaurer.ch/2019/07/how-to-install-and-update-powershell-7/
+# Wrapping the following command in cmd.exe
+# iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
+RUN powershell -ExecutionPolicy RemoteSigned -Command "$ErrorActionPreference = 'Stop'; iex ""& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"""
+
+# Make sure any failure in PowerShell scripts is fatal
+SHELL ["pwsh", "-ExecutionPolicy", "RemoteSigned", "-Command", "$ErrorActionPreference = 'Stop';"]
+RUN Write-Output $PSVersionTable $ErrorActionPreference
+
+COPY mesa_deps_vs2019.ps1 C:\
+RUN C:\mesa_deps_vs2019.ps1
+COPY mesa_vs_init.ps1 C:\
+
+ENV VULKAN_SDK_VERSION='1.3.211.0'
+COPY mesa_deps_choco.ps1 C:\
+RUN C:\mesa_deps_choco.ps1
+
+# Example usage:
+# `base_image` should use windows image that can be run with `--isolation=process` option,
+# since the resulting container will want to be used that way be later containers in the build process.
+# Only --isolation=hyperv can succeed building this container locally,
+# --isolation=process have network issue when installing Visual Studio and choco will crash
+# docker build --isolation=hyperv -f .\Dockerfile_vs -t mesa_vs --build-arg base_image="mcr.microsoft.com/windows:10.0.19041.1415" .
+