.test-jobs-common: stage: test image: ${XEN_REGISTRY}/${CONTAINER} rules: - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY when: on_success .arm64-test-needs: &arm64-test-needs - project: $ARTIFACTS_REPO job: $LINUX_JOB_ARM64 ref: $ARTIFACTS_BRANCH - project: $ARTIFACTS_REPO job: alpine-3.18-arm64-rootfs ref: $ARTIFACTS_BRANCH - qemu-system-aarch64-6.0.0-arm64-export .arm32-test-needs: &arm32-test-needs - qemu-system-aarch64-6.0.0-arm32-export .x86-64-test-needs: &x86-64-test-needs - project: $ARTIFACTS_REPO job: $LINUX_JOB_X86_64 ref: $ARTIFACTS_BRANCH - project: $ARTIFACTS_REPO job: alpine-3.18-x86_64-rootfs ref: $ARTIFACTS_BRANCH - project: $ARTIFACTS_REPO job: microcode-x86 ref: $ARTIFACTS_BRANCH .qemu-arm64: extends: .test-jobs-common variables: CONTAINER: debian:bookworm-arm64v8 LOGFILE: qemu-smoke-arm64.log artifacts: paths: - smoke.serial - '*.log' when: always tags: - arm64 .qemu-arm32: extends: .test-jobs-common variables: CONTAINER: debian:bookworm-arm64v8 LOGFILE: qemu-smoke-arm32.log artifacts: paths: - smoke.serial - '*.log' when: always tags: - arm64 .qemu-x86-64: extends: .test-jobs-common variables: CONTAINER: debian:13-x86_64 LOGFILE: qemu-smoke-x86-64.log artifacts: paths: - smoke.serial - '*.log' when: always tags: - x86_64 .qemu-smoke-x86-64: extends: .qemu-x86-64 variables: TEST_TIMEOUT_OVERRIDE: 120 .qemu-riscv64: extends: .test-jobs-common variables: CONTAINER: debian:13-riscv64 LOGFILE: qemu-smoke-riscv64.log artifacts: paths: - smoke.serial - '*.log' when: always tags: - x86_64 .qemu-ppc64le: extends: .test-jobs-common variables: CONTAINER: debian:13-ppc64le LOGFILE: qemu-smoke-ppc64le.log artifacts: paths: - smoke.serial - '*.log' when: always tags: - x86_64 .xilinx-arm64: extends: .test-jobs-common variables: CONTAINER: ubuntu:xenial-xilinx LOGFILE: qemu-smoke-xilinx.log TEST_TIMEOUT_OVERRIDE: 120 artifacts: paths: - smoke.serial - '*.log' - '*.dtb' when: always rules: - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" when: on_success tags: - xilinx .xilinx-x86_64: extends: .test-jobs-common variables: CONTAINER: ubuntu:xenial-xilinx LOGFILE: xilinx-smoke-x86_64.log XEN_CMD_CONSOLE: "console=com2 com2=57600,8n1,0x2F8,4" TEST_BOARD: "crater" TEST_TIMEOUT_OVERRIDE: 1000 artifacts: paths: - smoke.serial - '*.log' when: always rules: - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" when: on_success tags: - xilinx .adl-x86-64: extends: .test-jobs-common variables: # the test controller runs on RPi4 CONTAINER: alpine:3.18-arm64v8 LOGFILE: smoke-test.log PCIDEV: "03:00.0" PCIDEV_INTR: "MSI-X" CONSOLE_OPTS: "console=com1 com1=115200,8n1" SUT_ADDR: test-2.testnet artifacts: paths: - smoke.serial - '*.log' - tests-junit.xml when: always rules: - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" when: on_success tags: - qubes-hw2 .kbl-x86-64: # it's really similar to the ADL one extends: .adl-x86-64 variables: PCIDEV: "00:1f.6" PCIDEV_INTR: "MSI" CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,0" SUT_ADDR: test-3.testnet tags: - qubes-hw3 .zen2-x86-64: # it's really similar to the above extends: .adl-x86-64 variables: PCIDEV: "01:00.0" PCIDEV_INTR: "MSI-X" CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi,04:00.0" SUT_ADDR: test-1.testnet tags: - qubes-hw1 .zen3p-x86-64: # it's really similar to the above extends: .adl-x86-64 variables: PCIDEV: "01:00.0" PCIDEV_INTR: "MSI-X" CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi" SUT_ADDR: test-11.testnet tags: - qubes-hw11 # Test jobs build-each-commit-gcc: extends: .test-jobs-common variables: CONTAINER: debian:12-x86_64 XEN_TARGET_ARCH: x86_64 CC: gcc script: - 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 artifacts: paths: - '*.log' when: always needs: [] tags: - x86_64 xilinx-smoke-dom0less-arm64-gcc-debug: extends: .xilinx-arm64 script: - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 xilinx-smoke-dom0less-arm64-gcc-debug-gem-passthrough: extends: .xilinx-arm64 script: - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh gem-passthrough 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 xilinx-smoke-dom0-x86_64-gcc-debug: extends: .xilinx-x86_64 script: - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh ping 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug xilinx-smoke-dom0-x86_64-gcc-debug-argo: extends: .xilinx-x86_64 script: - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE} needs: - alpine-3.18-gcc-debug - project: xen-project/hardware/test-artifacts job: linux-6.6.56-x86_64 ref: master - project: xen-project/hardware/test-artifacts job: alpine-3.18-x86_64-rootfs ref: master - project: xen-project/hardware/test-artifacts job: microcode-x86 ref: master adl-smoke-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-smoke-x86-64-dom0pvh-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-smoke-x86-64-dom0pvh-hvm-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-suspend-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh s3 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-pci-pv-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pci-pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-pci-hvm-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pci-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-pvshim-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-tools-tests-pv-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pv 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug adl-tools-tests-pvh-x86-64-gcc-debug: extends: .adl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-smoke-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-smoke-x86-64-dom0pvh-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-smoke-x86-64-dom0pvh-hvm-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-suspend-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh s3 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-pci-pv-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pci-pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-pci-hvm-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pci-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-pvshim-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-tools-tests-pv-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pv 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug kbl-tools-tests-pvh-x86-64-gcc-debug: extends: .kbl-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen2-smoke-x86-64-gcc-debug: extends: .zen2-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen2-suspend-x86-64-gcc-debug: extends: .zen2-x86-64 script: - ./automation/scripts/qubes-x86-64.sh s3 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-smoke-x86-64-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pv 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-smoke-x86-64-dom0pvh-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-smoke-x86-64-dom0pvh-hvm-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-pci-hvm-x86-64-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pci-hvm 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-pvshim-x86-64-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-tools-tests-pv-x86-64-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pv 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug zen3p-tools-tests-pvh-x86-64-gcc-debug: extends: .zen3p-x86-64 script: - ./automation/scripts/qubes-x86-64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE} artifacts: reports: junit: tests-junit.xml needs: - *x86-64-test-needs - alpine-3.18-gcc-debug qemu-smoke-dom0-arm64-gcc: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-arm64 qemu-smoke-dom0-arm64-gcc-debug: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 qemu-smoke-dom0less-arm64-gcc: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-arm64 qemu-smoke-dom0less-arm64-gcc-debug: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 qemu-smoke-dom0less-arm64-gcc-debug-gicv3: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh gicv3 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 qemu-smoke-dom0less-arm64-gcc-debug-staticmem: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-mem 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64-staticmem qemu-smoke-dom0less-arm64-gcc-debug-staticheap: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-heap 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64-static-shared-mem qemu-smoke-dom0less-arm64-gcc-debug-boot-cpupools: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh boot-cpupools 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64-boot-cpupools qemu-smoke-dom0less-arm64-gcc-debug-earlyprintk: extends: .qemu-arm64 script: - ./automation/scripts/qemu-smoke-dom0less-arm64.sh earlyprintk 2>&1 | tee ${LOGFILE} needs: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64-earlyprintk qemu-xtf-dom0less-arm64-gcc-hyp-xen-version: extends: .qemu-arm64 script: - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE} needs: - alpine-3.18-gcc-arm64 - qemu-system-aarch64-6.0.0-arm64-export qemu-xtf-dom0less-arm64-gcc-debug-hyp-xen-version: extends: .qemu-arm64 script: - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE} needs: - alpine-3.18-gcc-debug-arm64 - qemu-system-aarch64-6.0.0-arm64-export qemu-smoke-dom0-arm32-gcc: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - yocto-qemuarm qemu-smoke-dom0less-arm32-gcc: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32 qemu-smoke-dom0less-arm32-gcc-debug: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32-debug qemu-smoke-dom0less-arm32-gcc-debug-staticmem: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh static-mem 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32-debug-staticmem qemu-smoke-dom0less-arm32-gcc-debug-gzip: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh gzip 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32-debug qemu-smoke-dom0less-arm32-gcc-without-dom0: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32 qemu-smoke-dom0less-arm32-gcc-debug-without-dom0: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32-debug qemu-smoke-dom0less-arm32-gcc-debug-earlyprintk: extends: .qemu-arm32 script: - ./automation/scripts/qemu-smoke-dom0less-arm32.sh earlyprintk 2>&1 | tee ${LOGFILE} needs: - *arm32-test-needs - debian-bookworm-gcc-arm32-debug-earlyprintk qemu-alpine-x86_64-gcc: extends: .qemu-x86-64 script: - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee ${LOGFILE} needs: - *x86-64-test-needs - alpine-3.18-gcc qemu-smoke-x86-64-gcc: extends: .qemu-smoke-x86-64 script: - ./automation/scripts/qemu-xtf.sh x86-64 pv64 example 2>&1 | tee ${LOGFILE} needs: - debian-13-x86_64-gcc-debug qemu-smoke-x86-64-clang: extends: .qemu-smoke-x86-64 script: - ./automation/scripts/qemu-xtf.sh x86-64 pv64 example 2>&1 | tee ${LOGFILE} needs: - debian-13-x86_64-clang-debug qemu-smoke-x86-64-gcc-pvh: extends: .qemu-smoke-x86-64 script: - ./automation/scripts/qemu-xtf.sh x86-64 hvm64 example 2>&1 | tee ${LOGFILE} needs: - debian-13-x86_64-gcc-debug qemu-smoke-x86-64-clang-pvh: extends: .qemu-smoke-x86-64 script: - ./automation/scripts/qemu-xtf.sh x86-64 hvm64 example 2>&1 | tee ${LOGFILE} needs: - debian-13-x86_64-clang-debug qemu-smoke-x86-64-gcc-efi: extends: .qemu-smoke-x86-64 script: - ./automation/scripts/qemu-xtf.sh x86-64-efi pv64 example 2>&1 | tee ${LOGFILE} needs: - debian-13-x86_64-gcc-debug qemu-xtf-argo-x86_64-gcc-debug: extends: .qemu-smoke-x86-64 variables: TEST_TIMEOUT_OVERRIDE: 60 script: - ./automation/scripts/qemu-xtf.sh x86-64 pv64 argo 2>&1 | tee ${LOGFILE} needs: - alpine-3.18-gcc-debug qemu-smoke-riscv64-gcc: extends: .qemu-riscv64 script: - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE} needs: - debian-13-riscv64-gcc-debug qemu-smoke-ppc64le-powernv9-gcc: extends: .qemu-ppc64le script: - ./automation/scripts/qemu-smoke-ppc64le.sh powernv9 2>&1 | tee ${LOGFILE} needs: - debian-13-ppc64le-gcc-debug