1bf215546Sopenharmony_ci# Docker image tag helper templates
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ci.incorporate-templates-commit:
4bf215546Sopenharmony_ci  variables:
5bf215546Sopenharmony_ci    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
6bf215546Sopenharmony_ci
7bf215546Sopenharmony_ci.incorporate-base-tag+templates-commit:
8bf215546Sopenharmony_ci  variables:
9bf215546Sopenharmony_ci    FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
10bf215546Sopenharmony_ci    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
11bf215546Sopenharmony_ci
12bf215546Sopenharmony_ci.set-image:
13bf215546Sopenharmony_ci  extends:
14bf215546Sopenharmony_ci    - .incorporate-templates-commit
15bf215546Sopenharmony_ci  variables:
16bf215546Sopenharmony_ci    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
17bf215546Sopenharmony_ci  image: "$MESA_IMAGE"
18bf215546Sopenharmony_ci
19bf215546Sopenharmony_ci.set-image-base-tag:
20bf215546Sopenharmony_ci  extends:
21bf215546Sopenharmony_ci    - .set-image
22bf215546Sopenharmony_ci    - .incorporate-base-tag+templates-commit
23bf215546Sopenharmony_ci  variables:
24bf215546Sopenharmony_ci    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
25bf215546Sopenharmony_ci
26bf215546Sopenharmony_ci.use-wine:
27bf215546Sopenharmony_ci  variables:
28bf215546Sopenharmony_ci    WINEPATH: "/usr/x86_64-w64-mingw32/bin;/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/10-posix;c:/windows;c:/windows/system32"
29bf215546Sopenharmony_ci
30bf215546Sopenharmony_ci# Build the CI docker images.
31bf215546Sopenharmony_ci#
32bf215546Sopenharmony_ci# MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the
33bf215546Sopenharmony_ci# image doesn't exist yet, the container stage job generates it.
34bf215546Sopenharmony_ci#
35bf215546Sopenharmony_ci# In order to generate a new image, one should generally change the tag.
36bf215546Sopenharmony_ci# While removing the image from the registry would also work, that's not
37bf215546Sopenharmony_ci# recommended except for ephemeral images during development: Replacing
38bf215546Sopenharmony_ci# an image after a significant amount of time might pull in newer
39bf215546Sopenharmony_ci# versions of gcc/clang or other packages, which might break the build
40bf215546Sopenharmony_ci# with older commits using the same tag.
41bf215546Sopenharmony_ci#
42bf215546Sopenharmony_ci# After merging a change resulting in generating a new image to the
43bf215546Sopenharmony_ci# main repository, it's recommended to remove the image from the source
44bf215546Sopenharmony_ci# repository's container registry, so that the image from the main
45bf215546Sopenharmony_ci# repository's registry will be used there as well.
46bf215546Sopenharmony_ci
47bf215546Sopenharmony_ci.container:
48bf215546Sopenharmony_ci  stage: container
49bf215546Sopenharmony_ci  extends:
50bf215546Sopenharmony_ci    - .container-rules
51bf215546Sopenharmony_ci    - .incorporate-templates-commit
52bf215546Sopenharmony_ci    - .use-wine
53bf215546Sopenharmony_ci  variables:
54bf215546Sopenharmony_ci    FDO_DISTRIBUTION_VERSION: bullseye-slim
55bf215546Sopenharmony_ci    FDO_REPO_SUFFIX: $CI_JOB_NAME
56bf215546Sopenharmony_ci    FDO_DISTRIBUTION_EXEC: 'env "WINEPATH=${WINEPATH}" FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
57bf215546Sopenharmony_ci    # no need to pull the whole repo to build the container image
58bf215546Sopenharmony_ci    GIT_STRATEGY: none
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ci.use-base-image:
61bf215546Sopenharmony_ci  extends:
62bf215546Sopenharmony_ci    - .container
63bf215546Sopenharmony_ci    - .incorporate-base-tag+templates-commit
64bf215546Sopenharmony_ci    # Don't want the .container rules
65bf215546Sopenharmony_ci    - .build-rules
66bf215546Sopenharmony_ci
67bf215546Sopenharmony_ci# Debian 11 based x86 build image base
68bf215546Sopenharmony_cidebian/x86_build-base:
69bf215546Sopenharmony_ci  extends:
70bf215546Sopenharmony_ci    - .fdo.container-build@debian
71bf215546Sopenharmony_ci    - .container
72bf215546Sopenharmony_ci  variables:
73bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_build-base ${DEBIAN_BASE_TAG}
74bf215546Sopenharmony_ci
75bf215546Sopenharmony_ci.use-debian/x86_build-base:
76bf215546Sopenharmony_ci  extends:
77bf215546Sopenharmony_ci    - .fdo.container-build@debian
78bf215546Sopenharmony_ci    - .use-base-image
79bf215546Sopenharmony_ci  variables:
80bf215546Sopenharmony_ci    MESA_BASE_IMAGE: ${DEBIAN_X86_BUILD_BASE_IMAGE}
81bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
82bf215546Sopenharmony_ci    MESA_ARTIFACTS_BASE_TAG: *debian-x86_build-base
83bf215546Sopenharmony_ci  needs:
84bf215546Sopenharmony_ci    - debian/x86_build-base
85bf215546Sopenharmony_ci
86bf215546Sopenharmony_ci# Debian 11 based x86 main build image
87bf215546Sopenharmony_cidebian/x86_build:
88bf215546Sopenharmony_ci  extends:
89bf215546Sopenharmony_ci    - .use-debian/x86_build-base
90bf215546Sopenharmony_ci  variables:
91bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_build ${DEBIAN_BUILD_TAG}
92bf215546Sopenharmony_ci
93bf215546Sopenharmony_ci.use-debian/x86_build:
94bf215546Sopenharmony_ci  extends:
95bf215546Sopenharmony_ci    - .set-image-base-tag
96bf215546Sopenharmony_ci  variables:
97bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
98bf215546Sopenharmony_ci    MESA_IMAGE_PATH: ${DEBIAN_X86_BUILD_IMAGE_PATH}
99bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-x86_build
100bf215546Sopenharmony_ci  needs:
101bf215546Sopenharmony_ci    - debian/x86_build
102bf215546Sopenharmony_ci
103bf215546Sopenharmony_ci# Debian 11 based i386 cross-build image
104bf215546Sopenharmony_cidebian/i386_build:
105bf215546Sopenharmony_ci  extends:
106bf215546Sopenharmony_ci    - .use-debian/x86_build-base
107bf215546Sopenharmony_ci  variables:
108bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-i386_build ${DEBIAN_BUILD_TAG}
109bf215546Sopenharmony_ci
110bf215546Sopenharmony_ci.use-debian/i386_build:
111bf215546Sopenharmony_ci  extends:
112bf215546Sopenharmony_ci    - .set-image-base-tag
113bf215546Sopenharmony_ci  variables:
114bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
115bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/i386_build"
116bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-i386_build
117bf215546Sopenharmony_ci  needs:
118bf215546Sopenharmony_ci    - debian/i386_build
119bf215546Sopenharmony_ci
120bf215546Sopenharmony_ci# Debian 11 based x86-mingw cross main build image
121bf215546Sopenharmony_cidebian/x86_build-mingw:
122bf215546Sopenharmony_ci  extends:
123bf215546Sopenharmony_ci    - .use-debian/x86_build-base
124bf215546Sopenharmony_ci  variables:
125bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_build_mingw ${DEBIAN_BUILD_MINGW_TAG}
126bf215546Sopenharmony_ci
127bf215546Sopenharmony_ci.use-debian/x86_build_mingw:
128bf215546Sopenharmony_ci  extends:
129bf215546Sopenharmony_ci    - .set-image-base-tag
130bf215546Sopenharmony_ci  variables:
131bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
132bf215546Sopenharmony_ci    MESA_IMAGE_PATH: ${DEBIAN_X86_BUILD_MINGW_IMAGE_PATH}
133bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-x86_build_mingw
134bf215546Sopenharmony_ci  needs:
135bf215546Sopenharmony_ci    - debian/x86_build-mingw
136bf215546Sopenharmony_ci
137bf215546Sopenharmony_ci# Debian 11 based ppc64el cross-build image
138bf215546Sopenharmony_cidebian/ppc64el_build:
139bf215546Sopenharmony_ci  extends:
140bf215546Sopenharmony_ci    - .use-debian/x86_build-base
141bf215546Sopenharmony_ci  variables:
142bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-ppc64el_build ${DEBIAN_BUILD_TAG}
143bf215546Sopenharmony_ci
144bf215546Sopenharmony_ci.use-debian/ppc64el_build:
145bf215546Sopenharmony_ci  extends:
146bf215546Sopenharmony_ci    - .set-image-base-tag
147bf215546Sopenharmony_ci  variables:
148bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
149bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/ppc64el_build"
150bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-ppc64el_build
151bf215546Sopenharmony_ci  needs:
152bf215546Sopenharmony_ci    - debian/ppc64el_build
153bf215546Sopenharmony_ci
154bf215546Sopenharmony_ci# Debian 11 based s390x cross-build image
155bf215546Sopenharmony_cidebian/s390x_build:
156bf215546Sopenharmony_ci  extends:
157bf215546Sopenharmony_ci    - .use-debian/x86_build-base
158bf215546Sopenharmony_ci  variables:
159bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-s390x_build ${DEBIAN_BUILD_TAG}
160bf215546Sopenharmony_ci
161bf215546Sopenharmony_ci.use-debian/s390x_build:
162bf215546Sopenharmony_ci  extends:
163bf215546Sopenharmony_ci    - .set-image-base-tag
164bf215546Sopenharmony_ci  variables:
165bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
166bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/s390x_build"
167bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-s390x_build
168bf215546Sopenharmony_ci  needs:
169bf215546Sopenharmony_ci    - debian/s390x_build
170bf215546Sopenharmony_ci
171bf215546Sopenharmony_ci# Android NDK cross-build image
172bf215546Sopenharmony_cidebian/android_build:
173bf215546Sopenharmony_ci  extends:
174bf215546Sopenharmony_ci    - .use-debian/x86_build-base
175bf215546Sopenharmony_ci  variables:
176bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
177bf215546Sopenharmony_ci
178bf215546Sopenharmony_ci.use-debian/android_build:
179bf215546Sopenharmony_ci  extends:
180bf215546Sopenharmony_ci    - .set-image-base-tag
181bf215546Sopenharmony_ci  variables:
182bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_build-base
183bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/android_build"
184bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-android_build
185bf215546Sopenharmony_ci  needs:
186bf215546Sopenharmony_ci    - debian/android_build
187bf215546Sopenharmony_ci
188bf215546Sopenharmony_ci# Debian 11 based x86 test image base
189bf215546Sopenharmony_cidebian/x86_test-base:
190bf215546Sopenharmony_ci  extends: debian/x86_build-base
191bf215546Sopenharmony_ci  variables:
192bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_test-base ${DEBIAN_BASE_TAG}
193bf215546Sopenharmony_ci
194bf215546Sopenharmony_ci.use-debian/x86_test-base:
195bf215546Sopenharmony_ci  extends:
196bf215546Sopenharmony_ci    - .fdo.container-build@debian
197bf215546Sopenharmony_ci    - .use-base-image
198bf215546Sopenharmony_ci  variables:
199bf215546Sopenharmony_ci    MESA_BASE_IMAGE: ${DEBIAN_X86_TEST_BASE_IMAGE}
200bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_test-base
201bf215546Sopenharmony_ci  needs:
202bf215546Sopenharmony_ci    - debian/x86_test-base
203bf215546Sopenharmony_ci
204bf215546Sopenharmony_ci# Debian 11 based x86 test image for GL
205bf215546Sopenharmony_cidebian/x86_test-gl:
206bf215546Sopenharmony_ci  extends: .use-debian/x86_test-base
207bf215546Sopenharmony_ci  variables:
208bf215546Sopenharmony_ci    FDO_DISTRIBUTION_EXEC: 'env KERNEL_URL=${KERNEL_URL} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
209bf215546Sopenharmony_ci    KERNEL_URL: &kernel-rootfs-url "https://gitlab.freedesktop.org/gfx-ci/linux/-/archive/v5.17-for-mesa-ci-b78f7870d97b/linux-v5.17-for-mesa-ci-b78f7870d97b.tar.bz2"
210bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_test-gl ${DEBIAN_X86_TEST_GL_TAG}
211bf215546Sopenharmony_ci
212bf215546Sopenharmony_ci.use-debian/x86_test-gl:
213bf215546Sopenharmony_ci  extends:
214bf215546Sopenharmony_ci    - .set-image-base-tag
215bf215546Sopenharmony_ci  variables:
216bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_test-base
217bf215546Sopenharmony_ci    MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_IMAGE_PATH}
218bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-x86_test-gl
219bf215546Sopenharmony_ci  needs:
220bf215546Sopenharmony_ci    - debian/x86_test-gl
221bf215546Sopenharmony_ci
222bf215546Sopenharmony_ci# Debian 11 based x86 test image for VK
223bf215546Sopenharmony_cidebian/x86_test-vk:
224bf215546Sopenharmony_ci  extends: .use-debian/x86_test-base
225bf215546Sopenharmony_ci  variables:
226bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-x86_test-vk ${DEBIAN_X86_TEST_VK_TAG}
227bf215546Sopenharmony_ci
228bf215546Sopenharmony_ci.use-debian/x86_test-vk:
229bf215546Sopenharmony_ci  extends:
230bf215546Sopenharmony_ci    - .set-image-base-tag
231bf215546Sopenharmony_ci  variables:
232bf215546Sopenharmony_ci    MESA_BASE_TAG: *debian-x86_test-base
233bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/x86_test-vk"
234bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-x86_test-vk
235bf215546Sopenharmony_ci  needs:
236bf215546Sopenharmony_ci    - debian/x86_test-vk
237bf215546Sopenharmony_ci
238bf215546Sopenharmony_ci# Debian 11 based ARM build image
239bf215546Sopenharmony_cidebian/arm_build:
240bf215546Sopenharmony_ci  extends:
241bf215546Sopenharmony_ci    - .fdo.container-build@debian
242bf215546Sopenharmony_ci    - .container
243bf215546Sopenharmony_ci  tags:
244bf215546Sopenharmony_ci    - aarch64
245bf215546Sopenharmony_ci  variables:
246bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-arm_build ${DEBIAN_BASE_TAG}
247bf215546Sopenharmony_ci
248bf215546Sopenharmony_ci.use-debian/arm_build:
249bf215546Sopenharmony_ci  extends:
250bf215546Sopenharmony_ci    - .set-image
251bf215546Sopenharmony_ci  variables:
252bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/arm_build"
253bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-arm_build
254bf215546Sopenharmony_ci    MESA_ARTIFACTS_TAG: *debian-arm_build
255bf215546Sopenharmony_ci  needs:
256bf215546Sopenharmony_ci    - debian/arm_build
257bf215546Sopenharmony_ci
258bf215546Sopenharmony_ci
259bf215546Sopenharmony_ci# Fedora 34 based x86 build image
260bf215546Sopenharmony_cifedora/x86_build:
261bf215546Sopenharmony_ci  extends:
262bf215546Sopenharmony_ci    - .fdo.container-build@fedora
263bf215546Sopenharmony_ci    - .container
264bf215546Sopenharmony_ci  variables:
265bf215546Sopenharmony_ci    FDO_DISTRIBUTION_VERSION: 34
266bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &fedora-x86_build ${FEDORA_X86_BUILD_TAG}
267bf215546Sopenharmony_ci
268bf215546Sopenharmony_ci.use-fedora/x86_build:
269bf215546Sopenharmony_ci  extends:
270bf215546Sopenharmony_ci    - .set-image
271bf215546Sopenharmony_ci  variables:
272bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "fedora/x86_build"
273bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *fedora-x86_build
274bf215546Sopenharmony_ci  needs:
275bf215546Sopenharmony_ci    - fedora/x86_build
276bf215546Sopenharmony_ci
277bf215546Sopenharmony_ci
278bf215546Sopenharmony_ci.kernel+rootfs:
279bf215546Sopenharmony_ci  extends:
280bf215546Sopenharmony_ci    - .build-rules
281bf215546Sopenharmony_ci  stage: container
282bf215546Sopenharmony_ci  variables:
283bf215546Sopenharmony_ci    GIT_STRATEGY: fetch
284bf215546Sopenharmony_ci    KERNEL_URL: *kernel-rootfs-url
285bf215546Sopenharmony_ci    MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG}
286bf215546Sopenharmony_ci    DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
287bf215546Sopenharmony_ci  script:
288bf215546Sopenharmony_ci    - .gitlab-ci/container/lava_build.sh
289bf215546Sopenharmony_ci
290bf215546Sopenharmony_cikernel+rootfs_amd64:
291bf215546Sopenharmony_ci  extends:
292bf215546Sopenharmony_ci    - .use-debian/x86_build-base
293bf215546Sopenharmony_ci    - .kernel+rootfs
294bf215546Sopenharmony_ci  image: "$FDO_BASE_IMAGE"
295bf215546Sopenharmony_ci  variables:
296bf215546Sopenharmony_ci    DEBIAN_ARCH: "amd64"
297bf215546Sopenharmony_ci    DISTRIBUTION_TAG: &distribution-tag-amd64 "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
298bf215546Sopenharmony_ci
299bf215546Sopenharmony_cikernel+rootfs_arm64:
300bf215546Sopenharmony_ci  extends:
301bf215546Sopenharmony_ci    - .use-debian/arm_build
302bf215546Sopenharmony_ci    - .kernel+rootfs
303bf215546Sopenharmony_ci  tags:
304bf215546Sopenharmony_ci    - aarch64
305bf215546Sopenharmony_ci  variables:
306bf215546Sopenharmony_ci    DEBIAN_ARCH: "arm64"
307bf215546Sopenharmony_ci
308bf215546Sopenharmony_cikernel+rootfs_armhf:
309bf215546Sopenharmony_ci  extends:
310bf215546Sopenharmony_ci    - kernel+rootfs_arm64
311bf215546Sopenharmony_ci  variables:
312bf215546Sopenharmony_ci    DEBIAN_ARCH: "armhf"
313bf215546Sopenharmony_ci
314bf215546Sopenharmony_ci# Cannot use anchors defined here from included files, so use extends: instead
315bf215546Sopenharmony_ci.use-kernel+rootfs-arm:
316bf215546Sopenharmony_ci  variables:
317bf215546Sopenharmony_ci    DISTRIBUTION_TAG: *distribution-tag-arm
318bf215546Sopenharmony_ci    MESA_ROOTFS_TAG: *kernel-rootfs
319bf215546Sopenharmony_ci
320bf215546Sopenharmony_ci.use-kernel+rootfs-amd64:
321bf215546Sopenharmony_ci  variables:
322bf215546Sopenharmony_ci    DISTRIBUTION_TAG: *distribution-tag-amd64
323bf215546Sopenharmony_ci    MESA_ROOTFS_TAG: *kernel-rootfs
324bf215546Sopenharmony_ci
325bf215546Sopenharmony_ci# x86 image with ARM64 & armhf kernel & rootfs for baremetal testing
326bf215546Sopenharmony_cidebian/arm_test:
327bf215546Sopenharmony_ci  extends:
328bf215546Sopenharmony_ci    - .fdo.container-build@debian
329bf215546Sopenharmony_ci    - .container
330bf215546Sopenharmony_ci    # Don't want the .container rules
331bf215546Sopenharmony_ci    - .build-rules
332bf215546Sopenharmony_ci  needs:
333bf215546Sopenharmony_ci    - kernel+rootfs_arm64
334bf215546Sopenharmony_ci    - kernel+rootfs_armhf
335bf215546Sopenharmony_ci  variables:
336bf215546Sopenharmony_ci    FDO_DISTRIBUTION_EXEC: 'env ARTIFACTS_PREFIX=https://${MINIO_HOST}/mesa-lava ARTIFACTS_SUFFIX=${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT} CI_PROJECT_PATH=${CI_PROJECT_PATH} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} FDO_UPSTREAM_REPO=${FDO_UPSTREAM_REPO} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
337bf215546Sopenharmony_ci    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
338bf215546Sopenharmony_ci    MESA_ARM_BUILD_TAG: *debian-arm_build
339bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &debian-arm_test ${DEBIAN_BASE_TAG}
340bf215546Sopenharmony_ci    MESA_ROOTFS_TAG: *kernel-rootfs
341bf215546Sopenharmony_ci
342bf215546Sopenharmony_ci.use-debian/arm_test:
343bf215546Sopenharmony_ci  image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
344bf215546Sopenharmony_ci  variables:
345bf215546Sopenharmony_ci    MESA_ARM_BUILD_TAG: *debian-arm_build
346bf215546Sopenharmony_ci    MESA_IMAGE_PATH: "debian/arm_test"
347bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *debian-arm_test
348bf215546Sopenharmony_ci    MESA_ROOTFS_TAG: *kernel-rootfs
349bf215546Sopenharmony_ci  needs:
350bf215546Sopenharmony_ci    - debian/arm_test
351bf215546Sopenharmony_ci
352bf215546Sopenharmony_ci# Native Windows docker builds
353bf215546Sopenharmony_ci#
354bf215546Sopenharmony_ci# Unlike the above Linux-based builds - including MinGW builds which
355bf215546Sopenharmony_ci# cross-compile for Windows - which use the freedesktop ci-templates, we
356bf215546Sopenharmony_ci# cannot use the same scheme here. As Windows lacks support for
357bf215546Sopenharmony_ci# Docker-in-Docker, and Podman does not run natively on Windows, we have
358bf215546Sopenharmony_ci# to open-code much of the same ourselves.
359bf215546Sopenharmony_ci#
360bf215546Sopenharmony_ci# This is achieved by first running in a native Windows shell instance
361bf215546Sopenharmony_ci# (host PowerShell) in the container stage to build and push the image,
362bf215546Sopenharmony_ci# then in the build stage by executing inside Docker.
363bf215546Sopenharmony_ci
364bf215546Sopenharmony_ci.windows-docker-vs2019:
365bf215546Sopenharmony_ci  variables:
366bf215546Sopenharmony_ci    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}"
367bf215546Sopenharmony_ci    MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}"
368bf215546Sopenharmony_ci
369bf215546Sopenharmony_ci.windows_container_build:
370bf215546Sopenharmony_ci  inherit:
371bf215546Sopenharmony_ci    default: [retry]
372bf215546Sopenharmony_ci  extends:
373bf215546Sopenharmony_ci    - .container
374bf215546Sopenharmony_ci    - .windows-docker-vs2019
375bf215546Sopenharmony_ci  rules:
376bf215546Sopenharmony_ci    - if: '$MICROSOFT_FARM == "offline"'
377bf215546Sopenharmony_ci      when: never
378bf215546Sopenharmony_ci    - !reference [.container-rules, rules]
379bf215546Sopenharmony_ci  variables:
380bf215546Sopenharmony_ci    GIT_STRATEGY: fetch # we do actually need the full repository though
381bf215546Sopenharmony_ci    MESA_BASE_IMAGE: None
382bf215546Sopenharmony_ci  tags:
383bf215546Sopenharmony_ci    - windows
384bf215546Sopenharmony_ci    - shell
385bf215546Sopenharmony_ci    - "2022"
386bf215546Sopenharmony_ci    - mesa
387bf215546Sopenharmony_ci  script:
388bf215546Sopenharmony_ci    - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE ${DOCKERFILE} ${MESA_BASE_IMAGE}
389bf215546Sopenharmony_ci
390bf215546Sopenharmony_ciwindows_vs2019:
391bf215546Sopenharmony_ci  inherit:
392bf215546Sopenharmony_ci    default: [retry]
393bf215546Sopenharmony_ci  extends:
394bf215546Sopenharmony_ci    - .windows_container_build
395bf215546Sopenharmony_ci  variables:
396bf215546Sopenharmony_ci    MESA_IMAGE_PATH: &windows_vs_image_path ${WINDOWS_X64_VS_PATH}
397bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &windows_vs_image_tag ${WINDOWS_X64_VS_TAG}
398bf215546Sopenharmony_ci    DOCKERFILE: Dockerfile_vs
399bf215546Sopenharmony_ci    MESA_BASE_IMAGE: "mcr.microsoft.com/windows/server:ltsc2022"
400bf215546Sopenharmony_ci
401bf215546Sopenharmony_ciwindows_build_vs2019:
402bf215546Sopenharmony_ci  inherit:
403bf215546Sopenharmony_ci    default: [retry]
404bf215546Sopenharmony_ci  extends:
405bf215546Sopenharmony_ci    - .windows_container_build
406bf215546Sopenharmony_ci  rules:
407bf215546Sopenharmony_ci    - if: '$MICROSOFT_FARM == "offline"'
408bf215546Sopenharmony_ci      when: never
409bf215546Sopenharmony_ci    - !reference [.build-rules, rules]
410bf215546Sopenharmony_ci  variables:
411bf215546Sopenharmony_ci    MESA_IMAGE_PATH: &windows_build_image_path ${WINDOWS_X64_BUILD_PATH}
412bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_BUILD_TAG}
413bf215546Sopenharmony_ci    DOCKERFILE: Dockerfile_build
414bf215546Sopenharmony_ci    MESA_BASE_IMAGE_PATH: *windows_vs_image_path
415bf215546Sopenharmony_ci    MESA_BASE_IMAGE_TAG: *windows_vs_image_tag
416bf215546Sopenharmony_ci    MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${MESA_BASE_IMAGE_TAG}"
417bf215546Sopenharmony_ci  timeout: 2h 30m # LLVM takes ages
418bf215546Sopenharmony_ci  needs:
419bf215546Sopenharmony_ci    - windows_vs2019
420bf215546Sopenharmony_ci
421bf215546Sopenharmony_ciwindows_test_vs2019:
422bf215546Sopenharmony_ci  inherit:
423bf215546Sopenharmony_ci    default: [retry]
424bf215546Sopenharmony_ci  extends:
425bf215546Sopenharmony_ci    - .windows_container_build
426bf215546Sopenharmony_ci  rules:
427bf215546Sopenharmony_ci    - if: '$MICROSOFT_FARM == "offline"'
428bf215546Sopenharmony_ci      when: never
429bf215546Sopenharmony_ci    - !reference [.build-rules, rules]
430bf215546Sopenharmony_ci  variables:
431bf215546Sopenharmony_ci    MESA_IMAGE_PATH: &windows_test_image_path ${WINDOWS_X64_TEST_PATH}
432bf215546Sopenharmony_ci    MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_BUILD_TAG}--${WINDOWS_X64_TEST_TAG}
433bf215546Sopenharmony_ci    DOCKERFILE: Dockerfile_test
434bf215546Sopenharmony_ci    MESA_BASE_IMAGE_PATH: *windows_vs_image_path
435bf215546Sopenharmony_ci    MESA_BASE_IMAGE_TAG: *windows_vs_image_tag
436bf215546Sopenharmony_ci    MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${MESA_BASE_IMAGE_TAG}"
437bf215546Sopenharmony_ci  needs:
438bf215546Sopenharmony_ci    - windows_vs2019
439bf215546Sopenharmony_ci
440bf215546Sopenharmony_ci.use-windows_build_vs2019:
441bf215546Sopenharmony_ci  inherit:
442bf215546Sopenharmony_ci    default: [retry]
443bf215546Sopenharmony_ci  extends: .windows-docker-vs2019
444bf215546Sopenharmony_ci  image: "$MESA_IMAGE"
445bf215546Sopenharmony_ci  variables:
446bf215546Sopenharmony_ci    MESA_IMAGE_PATH: *windows_build_image_path
447bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *windows_build_image_tag
448bf215546Sopenharmony_ci  needs:
449bf215546Sopenharmony_ci    - windows_build_vs2019
450bf215546Sopenharmony_ci
451bf215546Sopenharmony_ci.use-windows_test_vs2019:
452bf215546Sopenharmony_ci  inherit:
453bf215546Sopenharmony_ci    default: [retry]
454bf215546Sopenharmony_ci  extends: .windows-docker-vs2019
455bf215546Sopenharmony_ci  image: "$MESA_IMAGE"
456bf215546Sopenharmony_ci  variables:
457bf215546Sopenharmony_ci    MESA_IMAGE_PATH: *windows_test_image_path
458bf215546Sopenharmony_ci    MESA_IMAGE_TAG: *windows_test_image_tag
459