blob: 2d55c6dcf8c6f0bff4ba037700dfe4c95d1298aa [file] [log] [blame]
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-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:
# Fedora doesn't package a riscv32 compiler for QEMU. Oh, well.
# Select 'rv64' with PROCESSOR_OVERRIDE in case QEMU is too old to have 'max'
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\n" >test-env
- PROCESSOR_OVERRIDE=rv64 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