17ec681f3Smrg# Native Windows GitLab CI builds
27ec681f3Smrg
37ec681f3SmrgUnlike Linux, Windows cannot reuse the freedesktop ci-templates as they exist
47ec681f3Smrgas we do not have Podman, Skopeo, or even Docker-in-Docker builds available
57ec681f3Smrgunder Windows.
67ec681f3Smrg
77ec681f3SmrgWe still reuse the same model: build a base container with the core operating
87ec681f3Smrgsystem and infrequently-changed build dependencies, then execute Mesa builds
97ec681f3Smrgonly inside that base container. This is open-coded in PowerShell scripts.
107ec681f3Smrg
117ec681f3Smrg## Base container build
127ec681f3Smrg
137ec681f3SmrgThe base container build job executes the `mesa_container.ps1` script which
147ec681f3Smrgreproduces the ci-templates behaviour. It looks for the registry image in
157ec681f3Smrgthe user's namespace, and exits if found. If not found, it tries to copy
167ec681f3Smrgthe same image tag from the upstream Mesa repository. If that is not found,
177ec681f3Smrgthe image is rebuilt inside the user's namespace.
187ec681f3Smrg
197ec681f3SmrgThe rebuild executes `docker build` which calls `mesa_deps.ps1` inside the
207ec681f3Smrgcontainer to fetch and install all build dependencies. This includes Visual
217ec681f3SmrgStudio Community Edition (downloaded from Microsoft, under the license which
227ec681f3Smrgallows use by open-source projects), other build tools from Chocolatey, and
237ec681f3Smrgfinally Meson and Python dependencies from PyPI.
247ec681f3Smrg
257ec681f3SmrgThis job is executed inside a Windows shell environment directly inside the
267ec681f3Smrghost, without Docker.
277ec681f3Smrg
287ec681f3Smrg## Mesa build
297ec681f3Smrg
307ec681f3SmrgThe Mesa build runs inside the base container, executing `mesa_build.ps1`.
317ec681f3SmrgThis simply compiles Mesa using Meson and Ninja, executing the build and
327ec681f3Smrgunit tests. Currently, no build artifacts are captured.
33