1.test-jobs-common:
2  stage: test
3  image: registry.gitlab.com/xen-project/xen/${CONTAINER}
4
5.arm64-test-needs: &arm64-test-needs
6  - alpine-3.18-arm64-rootfs-export
7  - kernel-5.19-arm64-export
8  - qemu-system-aarch64-6.0.0-arm64-export
9
10.arm32-test-needs: &arm32-test-needs
11  - qemu-system-aarch64-6.0.0-arm32-export
12
13.x86-64-test-needs: &x86-64-test-needs
14  - alpine-3.18-rootfs-export
15  - kernel-6.1.19-export
16
17.qemu-arm64:
18  extends: .test-jobs-common
19  variables:
20    CONTAINER: debian:bookworm-arm64v8
21    LOGFILE: qemu-smoke-arm64.log
22  artifacts:
23    paths:
24      - smoke.serial
25      - '*.log'
26    when: always
27  tags:
28    - arm64
29
30.qemu-arm32:
31  extends: .test-jobs-common
32  variables:
33    CONTAINER: debian:bookworm-arm64v8
34    LOGFILE: qemu-smoke-arm32.log
35  artifacts:
36    paths:
37      - smoke.serial
38      - '*.log'
39    when: always
40  tags:
41    - arm64
42
43.qemu-x86-64:
44  extends: .test-jobs-common
45  variables:
46    CONTAINER: debian:bookworm
47    LOGFILE: qemu-smoke-x86-64.log
48  artifacts:
49    paths:
50      - smoke.serial
51      - '*.log'
52    when: always
53  tags:
54    - x86_64
55
56.qemu-riscv64:
57  extends: .test-jobs-common
58  variables:
59    CONTAINER: debian:12-riscv64
60    LOGFILE: qemu-smoke-riscv64.log
61  artifacts:
62    paths:
63      - smoke.serial
64      - '*.log'
65    when: always
66  tags:
67    - x86_64
68
69.qemu-ppc64le:
70  extends: .test-jobs-common
71  variables:
72    CONTAINER: debian:12-ppc64le
73    LOGFILE: qemu-smoke-ppc64le.log
74  artifacts:
75    paths:
76      - smoke.serial
77      - '*.log'
78    when: always
79  tags:
80    - x86_64
81
82.xilinx-arm64:
83  extends: .test-jobs-common
84  variables:
85    CONTAINER: ubuntu:xenial-xilinx
86    LOGFILE: qemu-smoke-xilinx.log
87  artifacts:
88    paths:
89      - smoke.serial
90      - '*.log'
91      - '*.dtb'
92    when: always
93  only:
94    variables:
95      - $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
96  tags:
97    - xilinx
98
99.adl-x86-64:
100  extends: .test-jobs-common
101  variables:
102    # the test controller runs on RPi4
103    CONTAINER: alpine:3.18-arm64v8
104    LOGFILE: smoke-test.log
105    PCIDEV: "03:00.0"
106    PCIDEV_INTR: "MSI-X"
107    CONSOLE_OPTS: "console=com1 com1=115200,8n1"
108  artifacts:
109    paths:
110      - smoke.serial
111      - '*.log'
112    when: always
113  only:
114    variables:
115      - $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
116  tags:
117    - qubes-hw2
118
119.zen3p-x86-64:
120  # it's really similar to the above
121  extends: .adl-x86-64
122  variables:
123    PCIDEV: "01:00.0"
124    PCIDEV_INTR: "MSI-X"
125    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi"
126  tags:
127    - qubes-hw11
128
129# Test jobs
130build-each-commit-gcc:
131  extends: .test-jobs-common
132  variables:
133    CONTAINER: debian:bookworm
134    XEN_TARGET_ARCH: x86_64
135    CC: gcc
136  script:
137    - BASE=${BASE_SHA:-${CI_COMMIT_BEFORE_SHA}} TIP=${TIP_SHA:-${CI_COMMIT_SHA}} ./automation/gitlab-ci/build-each-commit.sh 2>&1 | tee build-each-commit-gcc.log
138  artifacts:
139    paths:
140      - '*.log'
141    when: always
142  needs: []
143  tags:
144    - x86_64
145
146xilinx-smoke-dom0less-arm64-gcc-debug:
147  extends: .xilinx-arm64
148  script:
149    - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
150  needs:
151    - *arm64-test-needs
152    - alpine-3.18-gcc-debug-arm64
153
154xilinx-smoke-dom0less-arm64-gcc-debug-gem-passthrough:
155  extends: .xilinx-arm64
156  script:
157    - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh gem-passthrough 2>&1 | tee ${LOGFILE}
158  needs:
159    - *arm64-test-needs
160    - alpine-3.18-gcc-debug-arm64
161
162adl-smoke-x86-64-gcc-debug:
163  extends: .adl-x86-64
164  script:
165    - ./automation/scripts/qubes-x86-64.sh 2>&1 | tee ${LOGFILE}
166  needs:
167    - *x86-64-test-needs
168    - alpine-3.18-gcc-debug
169
170adl-smoke-x86-64-dom0pvh-gcc-debug:
171  extends: .adl-x86-64
172  script:
173    - ./automation/scripts/qubes-x86-64.sh dom0pvh 2>&1 | tee ${LOGFILE}
174  needs:
175    - *x86-64-test-needs
176    - alpine-3.18-gcc-debug
177
178adl-smoke-x86-64-dom0pvh-hvm-gcc-debug:
179  extends: .adl-x86-64
180  script:
181    - ./automation/scripts/qubes-x86-64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
182  needs:
183    - *x86-64-test-needs
184    - alpine-3.18-gcc-debug
185
186adl-suspend-x86-64-gcc-debug:
187  extends: .adl-x86-64
188  script:
189    - ./automation/scripts/qubes-x86-64.sh s3 2>&1 | tee ${LOGFILE}
190  needs:
191    - *x86-64-test-needs
192    - alpine-3.18-gcc-debug
193
194adl-pci-pv-x86-64-gcc-debug:
195  extends: .adl-x86-64
196  script:
197    - ./automation/scripts/qubes-x86-64.sh pci-pv 2>&1 | tee ${LOGFILE}
198  needs:
199    - *x86-64-test-needs
200    - alpine-3.18-gcc-debug
201
202adl-pci-hvm-x86-64-gcc-debug:
203  extends: .adl-x86-64
204  script:
205    - ./automation/scripts/qubes-x86-64.sh pci-hvm 2>&1 | tee ${LOGFILE}
206  needs:
207    - *x86-64-test-needs
208    - alpine-3.18-gcc-debug
209
210zen3p-smoke-x86-64-gcc-debug:
211  extends: .zen3p-x86-64
212  script:
213    - ./automation/scripts/qubes-x86-64.sh 2>&1 | tee ${LOGFILE}
214  needs:
215    - *x86-64-test-needs
216    - alpine-3.18-gcc-debug
217
218zen3p-smoke-x86-64-dom0pvh-gcc-debug:
219  extends: .zen3p-x86-64
220  script:
221    - ./automation/scripts/qubes-x86-64.sh dom0pvh 2>&1 | tee ${LOGFILE}
222  needs:
223    - *x86-64-test-needs
224    - alpine-3.18-gcc-debug
225
226zen3p-smoke-x86-64-dom0pvh-hvm-gcc-debug:
227  extends: .zen3p-x86-64
228  script:
229    - ./automation/scripts/qubes-x86-64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
230  needs:
231    - *x86-64-test-needs
232    - alpine-3.18-gcc-debug
233
234zen3p-pci-hvm-x86-64-gcc-debug:
235  extends: .zen3p-x86-64
236  script:
237    - ./automation/scripts/qubes-x86-64.sh pci-hvm 2>&1 | tee ${LOGFILE}
238  needs:
239    - *x86-64-test-needs
240    - alpine-3.18-gcc-debug
241
242qemu-smoke-dom0-arm64-gcc:
243  extends: .qemu-arm64
244  script:
245    - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE}
246  needs:
247    - *arm64-test-needs
248    - alpine-3.18-gcc-arm64
249
250qemu-smoke-dom0-arm64-gcc-debug:
251  extends: .qemu-arm64
252  script:
253    - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE}
254  needs:
255    - *arm64-test-needs
256    - alpine-3.18-gcc-debug-arm64
257
258qemu-smoke-dom0less-arm64-gcc:
259  extends: .qemu-arm64
260  script:
261    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
262  needs:
263    - *arm64-test-needs
264    - alpine-3.18-gcc-arm64
265
266qemu-smoke-dom0less-arm64-gcc-debug:
267  extends: .qemu-arm64
268  script:
269    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
270  needs:
271    - *arm64-test-needs
272    - alpine-3.18-gcc-debug-arm64
273
274qemu-smoke-dom0less-arm64-gcc-debug-gicv3:
275  extends: .qemu-arm64
276  script:
277    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh gicv3 2>&1 | tee ${LOGFILE}
278  needs:
279    - *arm64-test-needs
280    - alpine-3.18-gcc-debug-arm64
281
282qemu-smoke-dom0less-arm64-gcc-debug-staticmem:
283  extends: .qemu-arm64
284  script:
285    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-mem 2>&1 | tee ${LOGFILE}
286  needs:
287    - *arm64-test-needs
288    - alpine-3.18-gcc-debug-arm64-staticmem
289
290qemu-smoke-dom0less-arm64-gcc-debug-staticheap:
291 extends: .qemu-arm64
292 script:
293   - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-heap 2>&1 | tee ${LOGFILE}
294 needs:
295   - *arm64-test-needs
296   - alpine-3.18-gcc-debug-arm64
297
298qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem:
299  extends: .qemu-arm64
300  script:
301    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE}
302  needs:
303    - *arm64-test-needs
304    - alpine-3.18-gcc-debug-arm64-static-shared-mem
305
306qemu-smoke-dom0less-arm64-gcc-debug-boot-cpupools:
307  extends: .qemu-arm64
308  script:
309    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh boot-cpupools 2>&1 | tee ${LOGFILE}
310  needs:
311    - *arm64-test-needs
312    - alpine-3.18-gcc-debug-arm64-boot-cpupools
313
314qemu-smoke-dom0less-arm64-gcc-debug-earlyprintk:
315  extends: .qemu-arm64
316  script:
317    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh earlyprintk 2>&1 | tee ${LOGFILE}
318  needs:
319    - *arm64-test-needs
320    - alpine-3.18-gcc-debug-arm64-earlyprintk
321
322qemu-xtf-dom0less-arm64-gcc-hyp-xen-version:
323  extends: .qemu-arm64
324  script:
325    - ./automation/scripts/qemu-xtf-dom0less-arm64.sh hyp-xen-version 2>&1 | tee ${LOGFILE}
326  needs:
327    - alpine-3.18-gcc-arm64
328    - qemu-system-aarch64-6.0.0-arm64-export
329
330qemu-xtf-dom0less-arm64-gcc-debug-hyp-xen-version:
331  extends: .qemu-arm64
332  script:
333    - ./automation/scripts/qemu-xtf-dom0less-arm64.sh hyp-xen-version 2>&1 | tee ${LOGFILE}
334  needs:
335    - alpine-3.18-gcc-debug-arm64
336    - qemu-system-aarch64-6.0.0-arm64-export
337
338qemu-smoke-dom0-arm32-gcc:
339  extends: .qemu-arm32
340  script:
341    - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
342  needs:
343    - *arm32-test-needs
344    - yocto-qemuarm
345
346qemu-smoke-dom0less-arm32-gcc:
347  extends: .qemu-arm32
348  script:
349    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
350  needs:
351    - *arm32-test-needs
352    - debian-bookworm-gcc-arm32
353
354qemu-smoke-dom0less-arm32-gcc-debug:
355  extends: .qemu-arm32
356  script:
357    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
358  needs:
359    - *arm32-test-needs
360    - debian-bookworm-gcc-arm32-debug
361
362qemu-smoke-dom0less-arm32-gcc-debug-staticmem:
363  extends: .qemu-arm32
364  script:
365    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh static-mem 2>&1 | tee ${LOGFILE}
366  needs:
367    - *arm32-test-needs
368    - debian-bookworm-gcc-arm32-debug-staticmem
369
370qemu-smoke-dom0less-arm32-gcc-debug-gzip:
371  extends: .qemu-arm32
372  script:
373    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh gzip 2>&1 | tee ${LOGFILE}
374  needs:
375    - *arm32-test-needs
376    - debian-bookworm-gcc-arm32-debug
377
378qemu-smoke-dom0less-arm32-gcc-without-dom0:
379  extends: .qemu-arm32
380  script:
381    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
382  needs:
383    - *arm32-test-needs
384    - debian-bookworm-gcc-arm32
385
386qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
387  extends: .qemu-arm32
388  script:
389    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
390  needs:
391    - *arm32-test-needs
392    - debian-bookworm-gcc-arm32-debug
393
394qemu-smoke-dom0less-arm32-gcc-debug-earlyprintk:
395  extends: .qemu-arm32
396  script:
397    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh earlyprintk 2>&1 | tee ${LOGFILE}
398  needs:
399    - *arm32-test-needs
400    - debian-bookworm-gcc-arm32-debug-earlyprintk
401
402qemu-alpine-x86_64-gcc:
403  extends: .qemu-x86-64
404  script:
405    - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee ${LOGFILE}
406  needs:
407    - *x86-64-test-needs
408    - alpine-3.18-gcc
409
410qemu-smoke-x86-64-gcc:
411  extends: .qemu-x86-64
412  script:
413    - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
414  needs:
415    - debian-bookworm-gcc-debug
416
417qemu-smoke-x86-64-clang:
418  extends: .qemu-x86-64
419  script:
420    - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
421  needs:
422    - debian-bookworm-clang-debug
423
424qemu-smoke-x86-64-gcc-pvh:
425  extends: .qemu-x86-64
426  script:
427    - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
428  needs:
429    - debian-bookworm-gcc-debug
430
431qemu-smoke-x86-64-clang-pvh:
432  extends: .qemu-x86-64
433  script:
434    - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
435  needs:
436    - debian-bookworm-clang-debug
437
438qemu-smoke-riscv64-gcc:
439  extends: .qemu-riscv64
440  script:
441    - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE}
442  needs:
443    - debian-12-riscv64-gcc-debug
444
445qemu-smoke-ppc64le-powernv9-gcc:
446  extends: .qemu-ppc64le
447  script:
448    - ./automation/scripts/qemu-smoke-ppc64le.sh powernv9 2>&1 | tee ${LOGFILE}
449  needs:
450    - debian-12-ppc64le-gcc-debug
451