ci/vs2019: Split install of vs2019 and choco into separate Docker image

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16934>
This commit is contained in:
Yonggang Luo 2022-06-10 17:32:13 +08:00 committed by Marge Bot
parent cfa67ec750
commit 97e7f6d068
4 changed files with 64 additions and 22 deletions

View File

@ -366,16 +366,36 @@ debian/arm_test:
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_build_vs2019:
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:
@ -391,11 +411,11 @@ windows_test_vs2019:
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:

View File

@ -14,8 +14,11 @@ variables:
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"

View File

@ -1,21 +1,11 @@
# 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 .

View File

@ -0,0 +1,29 @@
# 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" .