mesa/.gitlab-ci/windows
Yonggang Luo 543e872d90 ci/msvc: Split install vulkan sdk out of choco
packaging are installed because python 3.12 need it

Install of vulkan-sdk improved so that it's can be running in non-docker environment

Now vulkan-sdk have separate script so that it can be updated without update MSVC

THe choco installed packages is almost freeze to update, so split install of vulkan sdk
out of it for avoid update it when update VULKAN_SDK_VERSION on local computer

--params="/InstallDir:C:\python3" won't take effect, drop it for not misleading

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/26736>
2023-12-24 11:46:43 +00:00
..
deqp_runner_run.ps1 ci: deduplicate constructing the ARTIFACTS_BASE_URL 2023-12-13 21:12:22 +00:00
Dockerfile_build ci/msvc: Split install vulkan sdk out of choco 2023-12-24 11:46:43 +00:00
Dockerfile_test ci/msvc: Split install vulkan sdk out of choco 2023-12-24 11:46:43 +00:00
Dockerfile_vs ci/msvc: Split install vulkan sdk out of choco 2023-12-24 11:46:43 +00:00
mesa_build.ps1 meson: Add all, all_free (default) options for video-codecs option. 2023-12-06 21:49:27 +00:00
mesa_container.ps1
mesa_deps_build.ps1 d3d12: Bump directx-headers dependency to v611.0 for latest video codecs and features 2023-12-14 20:06:52 -05:00
mesa_deps_choco.ps1 ci/msvc: Split install vulkan sdk out of choco 2023-12-24 11:46:43 +00:00
mesa_deps_test.ps1 ci/windows: Update WARP to 1.0.7.1 2023-05-31 16:20:15 +00:00
mesa_deps_vs2019.ps1
mesa_deps_vulkan_sdk.ps1 ci/msvc: Split install vulkan sdk out of choco 2023-12-24 11:46:43 +00:00
mesa_vs_init.ps1
piglit_run.ps1
README.md
spirv2dxil_check.ps1
spirv2dxil_run.ps1

Native Windows GitLab CI builds

Unlike Linux, Windows cannot reuse the freedesktop ci-templates as they exist as we do not have Podman, Skopeo, or even Docker-in-Docker builds available under Windows.

We still reuse the same model: build a base container with the core operating system and infrequently-changed build dependencies, then execute Mesa builds only inside that base container. This is open-coded in PowerShell scripts.

Base container build

The base container build job executes the mesa_container.ps1 script which reproduces the ci-templates behaviour. It looks for the registry image in the user's namespace, and exits if found. If not found, it tries to copy the same image tag from the upstream Mesa repository. If that is not found, the image is rebuilt inside the user's namespace.

The rebuild executes docker build which calls mesa_deps.ps1 inside the container to fetch and install all build dependencies. This includes Visual Studio Community Edition (downloaded from Microsoft, under the license which allows use by open-source projects), other build tools from Chocolatey, and finally Meson and Python dependencies from PyPI.

This job is executed inside a Windows shell environment directly inside the host, without Docker.

Mesa build

The Mesa build runs inside the base container, executing mesa_build.ps1. This simply compiles Mesa using Meson and Ninja, executing the build and unit tests. Currently, no build artifacts are captured.

Using build scripts locally

*.ps1 scripts for building dockers are using PowerShell 7 to run