| image: fedora:40 |
| |
| before_script: |
| - dnf update -y |
| - dnf install -y make python |
| |
| # By default artifacts are only saved on success. This uses when:always |
| # because the test logs are important to help diagnose failures. |
| .intree_template: |
| artifacts: |
| when: always |
| expire_in: 2 days |
| when: always |
| paths: |
| - logs |
| |
| .outoftree_template: |
| artifacts: |
| when: always |
| expire_in: 2 days |
| when: always |
| paths: |
| - build/logs |
| |
| build-aarch64: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-aarch64 gcc-aarch64-linux-gnu |
| - ./configure --arch=aarch64 --cross-prefix=aarch64-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| cache |
| debug-bp |
| debug-sstep |
| debug-wp |
| gicv2-active |
| gicv2-ipi |
| gicv2-mmio |
| gicv3-active |
| gicv3-ipi |
| its-introspection |
| its-trigger |
| pci-test |
| pmu-cycle-counter |
| pmu-event-counter-config |
| pmu-sw-incr |
| selftest-setup |
| selftest-smp |
| selftest-vectors-kernel |
| selftest-vectors-user |
| timer |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-aarch64-efi: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-aarch64 gcc-aarch64-linux-gnu edk2-aarch64 |
| - ./configure --arch=aarch64 --cross-prefix=aarch64-linux-gnu- --enable-efi --enable-efi-direct |
| - make -j2 |
| - ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| selftest-setup |
| selftest-smp |
| selftest-vectors-kernel |
| selftest-vectors-user |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-aarch64-efi-acpi: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-aarch64 gcc-aarch64-linux-gnu edk2-aarch64 |
| - ./configure --arch=aarch64 --cross-prefix=aarch64-linux-gnu- --enable-efi --enable-efi-direct |
| - make -j2 |
| - EFI_USE_ACPI=y ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| selftest-setup |
| selftest-smp |
| selftest-vectors-kernel |
| selftest-vectors-user |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-aarch64-clang: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-aarch64 gcc-aarch64-linux-gnu clang |
| - mkdir build |
| - cd build |
| - ../configure --arch=arm64 --cc=clang --cflags='--target=aarch64' --cross-prefix=aarch64-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| cache |
| debug-bp |
| debug-sstep |
| debug-wp |
| gicv2-active |
| gicv2-ipi |
| gicv2-mmio |
| gicv3-active |
| gicv3-ipi |
| its-introspection |
| its-trigger |
| pci-test |
| pmu-cycle-counter |
| pmu-event-counter-config |
| pmu-sw-incr |
| selftest-setup |
| selftest-smp |
| selftest-vectors-kernel |
| selftest-vectors-user |
| timer |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-aarch64-clang-efi: |
| extends: .intree_template |
| script: |
| - dnf install -y edk2-aarch64 qemu-system-aarch64 gcc-aarch64-linux-gnu clang |
| - ./configure --arch=arm64 --cc=clang --cflags='--target=aarch64' --cross-prefix=aarch64-linux-gnu- --enable-efi --enable-efi-direct |
| - make -j2 |
| - ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| selftest-setup |
| selftest-smp |
| selftest-vectors-kernel |
| selftest-vectors-user |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-arm: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-arm gcc-arm-linux-gnu |
| - mkdir build |
| - cd build |
| - ../configure --arch=arm --cross-prefix=arm-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg MAX_SMP=8 ./run_tests.sh |
| selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp |
| pci-test pmu-cycle-counter gicv2-ipi gicv2-mmio gicv3-ipi gicv2-active |
| gicv3-active |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-ppc64be: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-ppc gcc-powerpc64-linux-gnu nmap-ncat |
| - mkdir build |
| - cd build |
| - ../configure --arch=ppc64 --endian=big --cross-prefix=powerpc64-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| selftest-setup |
| selftest-migration |
| selftest-migration-skip |
| spapr_hcall |
| rtas-get-time-of-day |
| rtas-get-time-of-day-base |
| rtas-set-time-of-day |
| emulator |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| |
| build-ppc64le: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-ppc gcc-powerpc64-linux-gnu nmap-ncat |
| - ./configure --arch=ppc64 --endian=little --cross-prefix=powerpc64-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| selftest-setup |
| selftest-migration |
| selftest-migration-skip |
| spapr_hcall |
| rtas-get-time-of-day |
| rtas-get-time-of-day-base |
| rtas-set-time-of-day |
| emulator |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| |
| build-riscv32: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-riscv gcc-riscv64-linux-gnu |
| - mkdir build |
| - cd build |
| - ../configure --arch=riscv32 --cross-prefix=riscv64-linux-gnu- |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-riscv64: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-riscv gcc-riscv64-linux-gnu |
| - ./configure --arch=riscv64 --cross-prefix=riscv64-linux-gnu- |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-riscv64-efi: |
| extends: .intree_template |
| script: |
| - dnf install -y edk2-riscv64 qemu-system-riscv gcc-riscv64-linux-gnu |
| - cp /usr/share/edk2/riscv/RISCV_VIRT_CODE.fd . |
| - truncate -s 32M RISCV_VIRT_CODE.fd |
| - ./configure --arch=riscv64 --cross-prefix=riscv64-linux-gnu- --enable-efi |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-riscv32-clang: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-riscv gcc-riscv64-linux-gnu clang |
| - ./configure --arch=riscv32 --cc=clang --cflags='--target=riscv32' --cross-prefix=riscv64-linux-gnu- |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-riscv64-clang: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-riscv gcc-riscv64-linux-gnu clang |
| - mkdir build |
| - cd build |
| - ../configure --arch=riscv64 --cc=clang --cflags='--target=riscv64' --cross-prefix=riscv64-linux-gnu- |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-riscv64-clang-efi: |
| extends: .intree_template |
| script: |
| - dnf install -y edk2-riscv64 qemu-system-riscv gcc-riscv64-linux-gnu clang |
| - cp /usr/share/edk2/riscv/RISCV_VIRT_CODE.fd . |
| - truncate -s 32M RISCV_VIRT_CODE.fd |
| - ./configure --arch=riscv64 --cc=clang --cflags='--target=riscv64' --cross-prefix=riscv64-linux-gnu- --enable-efi |
| - make -j2 |
| - printf "FOO=foo\nBAR=bar\nBAZ=baz\nMVENDORID=0\nMARCHID=0\nMIMPID=0\n" >test-env |
| - ACCEL=tcg KVM_UNIT_TESTS_ENV=test-env ./run_tests.sh |
| selftest |
| sbi |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-s390x: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-s390x gcc-s390x-linux-gnu |
| - mkdir build |
| - cd build |
| - ../configure --arch=s390x --cross-prefix=s390x-linux-gnu- |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| adtl-status-no-vec-no-gs-tcg |
| adtl-status-tcg |
| cpumodel |
| css |
| diag10 |
| diag288 |
| diag308 |
| edat |
| emulator |
| epsw |
| exittime |
| firq-linear-cpu-ids-tcg |
| firq-nonlinear-cpu-ids-tcg |
| iep |
| intercept |
| mvpg |
| sck |
| sclp-1g |
| sclp-3g |
| selftest-setup |
| sieve |
| smp |
| stsi |
| tprot |
| vector |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| |
| build-x86_64: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-x86 gcc |
| - ./configure --arch=x86_64 |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| eventinj |
| intel_iommu |
| ioapic-split |
| memory |
| pks |
| pku |
| rdpru |
| realmode |
| rmap_chain |
| setjmp |
| sieve |
| smap |
| smptest |
| smptest3 |
| syscall |
| tsc |
| umip |
| vmexit_cpuid |
| vmexit_cr0_wp |
| vmexit_cr4_pge |
| vmexit_inl_pmtimer |
| vmexit_ipi |
| vmexit_ipi_halt |
| vmexit_mov_from_cr8 |
| vmexit_mov_to_cr8 |
| vmexit_ple_round_robin |
| vmexit_tscdeadline |
| vmexit_tscdeadline_immed |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| |
| build-i386: |
| extends: .outoftree_template |
| script: |
| - dnf install -y qemu-system-x86 gcc |
| - mkdir build |
| - cd build |
| - ../configure --arch=i386 |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| cmpxchg8b |
| eventinj |
| realmode |
| setjmp |
| sieve |
| smap |
| smptest |
| smptest3 |
| taskswitch |
| tsc |
| umip |
| vmexit_cpuid |
| vmexit_cr0_wp |
| vmexit_cr4_pge |
| vmexit_inl_pmtimer |
| vmexit_ipi |
| vmexit_ipi_halt |
| vmexit_mov_from_cr8 |
| vmexit_mov_to_cr8 |
| vmexit_ple_round_robin |
| vmexit_tscdeadline |
| vmexit_tscdeadline_immed |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| |
| build-clang: |
| extends: .intree_template |
| script: |
| - dnf install -y qemu-system-x86 clang |
| - ./configure --arch=x86_64 --cc=clang |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| eventinj |
| intel_iommu |
| ioapic-split |
| memory |
| pks |
| pku |
| rdpru |
| rmap_chain |
| setjmp |
| sieve |
| smap |
| smptest |
| smptest3 |
| syscall |
| tsc |
| umip |
| vmexit_cpuid |
| vmexit_cr0_wp |
| vmexit_cr4_pge |
| vmexit_inl_pmtimer |
| vmexit_ipi |
| vmexit_ipi_halt |
| vmexit_mov_from_cr8 |
| vmexit_mov_to_cr8 |
| vmexit_ple_round_robin |
| vmexit_tscdeadline |
| vmexit_tscdeadline_immed |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| build-centos8: |
| extends: .outoftree_template |
| image: centos:8 |
| before_script: |
| # CentOS mirrors have changed, these sed scripts fixes the repos. |
| - sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo |
| - sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo |
| - sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo |
| - yum update -y |
| - yum install -y make qemu-kvm gcc |
| script: |
| - mkdir build |
| - cd build |
| - ../configure --arch=x86_64 --disable-pretty-print-stacks |
| - make -j2 |
| - ACCEL=tcg ./run_tests.sh |
| eventinj |
| intel_iommu |
| ioapic-split |
| memory |
| pks |
| pku |
| port80 |
| rdpru |
| rmap_chain |
| setjmp |
| sieve |
| smap |
| smptest |
| smptest3 |
| syscall |
| tsc |
| umip |
| vmexit_cpuid |
| vmexit_cr0_wp |
| vmexit_cr4_pge |
| vmexit_inl_pmtimer |
| vmexit_ipi |
| vmexit_ipi_halt |
| vmexit_mov_from_cr8 |
| vmexit_mov_to_cr8 |
| vmexit_ple_round_robin |
| vmexit_tscdeadline |
| vmexit_tscdeadline_immed |
| | tee results.txt |
| - if grep -q FAIL results.txt ; then exit 1 ; fi |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| |
| # Cirrus-CI provides containers with macOS and Linux with KVM enabled, |
| # so we can test some scenarios there that are not possible with the |
| # gitlab-CI shared runners. We use the "cirrus-run" container from the |
| # libvirt project to start the jobs. See the following URL for more |
| # information how to set up your environment to use these containers: |
| # |
| # https://gitlab.com/libvirt/libvirt/-/blob/v7.0.0/ci/README.rst |
| # |
| .cirrus_build_job_template: &cirrus_build_job_definition |
| image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:latest |
| before_script: |
| - sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g" |
| -e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g" |
| -e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g" |
| < ci/$CI_JOB_NAME.yml > ci/_$CI_JOB_NAME.yml |
| script: |
| - cirrus-run -v --show-build-log always ci/_$CI_JOB_NAME.yml |
| only: |
| variables: |
| - $CIRRUS_GITHUB_REPO |
| - $CIRRUS_API_TOKEN |
| |
| cirrus-ci-fedora: |
| <<: *cirrus_build_job_definition |
| |
| cirrus-ci-macos-i386: |
| <<: *cirrus_build_job_definition |
| |
| cirrus-ci-macos-x86-64: |
| <<: *cirrus_build_job_definition |
| |
| s390x-kvm: |
| extends: .intree_template |
| before_script: [] |
| tags: |
| - s390x-z15-vm |
| script: |
| - ./configure --arch=s390x |
| - make -j$(nproc) |
| - ACCEL=kvm ./run_tests.sh |
| selftest-setup |
| selftest-migration-skip |
| cmm |
| cpumodel |
| css |
| diag10 |
| diag288 |
| diag308 |
| emulator |
| execute |
| gs |
| iep |
| intercept |
| migration |
| migration-memory |
| migration-sck |
| migration-skey-parallel |
| migration-skey-sequential |
| pfmf |
| sclp-1g |
| sclp-3g |
| sie |
| sieve |
| skrf |
| sthyi |
| stsi |
| vector |
| | tee results.txt |
| - grep -q PASS results.txt && ! grep -q FAIL results.txt |
| only: |
| variables: |
| - $S390X_Z15_RUNNER_AVAILABLE |
| |
| check-kerneldoc: |
| extends: .intree_template |
| stage: build |
| image: python:3.10-alpine |
| needs: [] |
| script: |
| - ./configure --arch=x86_64 |
| - make -s check-kerneldoc 2>&1 | tee docwarnings.txt |
| - test -z `cat docwarnings.txt` |
| before_script: |
| - apk -U add bash make perl gcc |
| allow_failure: true |
| |
| check-shellcheck: |
| extends: .intree_template |
| stage: build |
| image: python:3.10-alpine |
| needs: [] |
| script: |
| - ./configure --arch=x86_64 |
| - make -s shellcheck 2>&1 | tee shellcheckwarnings.txt |
| - test -z `cat shellcheckwarnings.txt` |
| before_script: |
| - apk -U add bash make gcc shellcheck |
| allow_failure: true |
| |
| check-patch: |
| extends: .intree_template |
| stage: build |
| image: python:3.10-alpine |
| needs: [] |
| script: |
| - scripts/check-patch.py |
| before_script: |
| - apk -U add git perl |
| allow_failure: true |