Message ID | 1551422355-10473-1-git-send-email-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [kvm-unit-tests] Add a .gitlab-ci.yml file for automatic CI testing on GitLab instances | expand |
On 01.03.19 07:39, Thomas Huth wrote: > When changing common code of the kvm-unit-tests, one should make sure that > the tests still compile fine for all target architectures afterwards. But > compiling kvm-unit-tests for all target architectures manually is cumbersome. > For people like me who store their git trees on GitLab, this can be done > automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- > matic builds are now triggered on each push to a kvm-unit-test repository on > gitlab.com. Additionally, the script also runs the tests that can be executed > with QEMU TCG (except for s390x, since the QEMU package of the CI container > currently does not provide the required s390-ccw bios here). Just wondering, doesn't one have to specify a container environment to use? Is that done in some other configuration? Or does it always default to some ubuntu/debian thingy? > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > An example output can be found here: > https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 > > .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 78 insertions(+) > create mode 100644 .gitlab-ci.yml > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > new file mode 100644 > index 0000000..bc6ca0e > --- /dev/null > +++ b/.gitlab-ci.yml > @@ -0,0 +1,78 @@ > +before_script: > + - apt-get update -qq > + - apt-get install -y -qq qemu-system > + > +build-aarch64: > + script: > + - apt-get install -y -qq gcc-aarch64-linux-gnu > + - ./configure --arch=aarch64 --processor=arm64 > + --cross-prefix=aarch64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp > + pci-test gicv2-active gicv3-active timer > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-arm: > + script: > + - apt-get install -y -qq gcc-arm-linux-gnueabi > + - ./configure --arch=arm --processor=arm --cross-prefix=arm-linux-gnueabi- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp > + pci-test gicv2-active gicv3-active > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-ppc64be: > + script: > + - apt-get install -y -qq gcc-powerpc64-linux-gnu > + - ./configure --arch=ppc64 --processor=powerpc --endian=big > + --cross-prefix=powerpc64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup 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: > + script: > + - apt-get install -y -qq gcc-powerpc64-linux-gnu > + - ./configure --arch=ppc64 --processor=powerpc --endian=little > + --cross-prefix=powerpc64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup 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-s390x: > + script: > + - apt-get install -y -qq gcc-s390x-linux-gnu > + - ./configure --arch=s390x --processor=s390x --cross-prefix=s390x-linux-gnu- > + - make -j2 > + > +build-x86_64: > + script: > + - ./configure --arch=x86_64 --processor=x86_64 > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + ioapic-split ioapic smptest smptest3 vmexit_cpuid vmexit_mov_from_cr8 > + vmexit_mov_to_cr8 vmexit_inl_pmtimer vmexit_ipi vmexit_ipi_halt > + vmexit_ple_round_robin vmexit_tscdeadline vmexit_tscdeadline_immed > + eventinj msr port80 sieve tsc rmap_chain umip hyperv_stimer intel_iommu > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-i386: > + script: > + - apt-get install -y -qq gcc-multilib > + - ./configure --arch=i386 --processor=i386 > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + eventinj port80 sieve tsc taskswitch umip hyperv_stimer > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi >
On 01/03/2019 09.22, David Hildenbrand wrote: > On 01.03.19 07:39, Thomas Huth wrote: >> When changing common code of the kvm-unit-tests, one should make sure that >> the tests still compile fine for all target architectures afterwards. But >> compiling kvm-unit-tests for all target architectures manually is cumbersome. >> For people like me who store their git trees on GitLab, this can be done >> automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- >> matic builds are now triggered on each push to a kvm-unit-test repository on >> gitlab.com. Additionally, the script also runs the tests that can be executed >> with QEMU TCG (except for s390x, since the QEMU package of the CI container >> currently does not provide the required s390-ccw bios here). > > Just wondering, doesn't one have to specify a container environment to > use? Is that done in some other configuration? That's for other CI environments (like Travis). For the default on gitlab.com, it's fixed AFAIK. You can provide your own runner scripts, too, but then you also need a dedicated machines where it runs. At least that's how I understood it - I'm also not an expert here. > Or does it always default to some ubuntu/debian thingy? Yes. Not sure whether it's Debian or Ubuntu and which version, though. Thomas
On Fri, Mar 01, 2019 at 07:39:15AM +0100, Thomas Huth wrote: > When changing common code of the kvm-unit-tests, one should make sure that > the tests still compile fine for all target architectures afterwards. But > compiling kvm-unit-tests for all target architectures manually is cumbersome. > For people like me who store their git trees on GitLab, this can be done > automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- > matic builds are now triggered on each push to a kvm-unit-test repository on > gitlab.com. Additionally, the script also runs the tests that can be executed > with QEMU TCG (except for s390x, since the QEMU package of the CI container > currently does not provide the required s390-ccw bios here). > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > An example output can be found here: > https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 > > .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 78 insertions(+) > create mode 100644 .gitlab-ci.yml > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > new file mode 100644 > index 0000000..bc6ca0e > --- /dev/null > +++ b/.gitlab-ci.yml > @@ -0,0 +1,78 @@ > +before_script: > + - apt-get update -qq > + - apt-get install -y -qq qemu-system > + > +build-aarch64: > + script: > + - apt-get install -y -qq gcc-aarch64-linux-gnu > + - ./configure --arch=aarch64 --processor=arm64 If we're explicitly selecting the processor, then we should use the one that configure will fix it up to. --processor=cortex-a57 > + --cross-prefix=aarch64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp > + pci-test gicv2-active gicv3-active timer Any reason to just pick the 'active' tests from the gic tests? And to drop PMU and PSCI tests? > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-arm: > + script: > + - apt-get install -y -qq gcc-arm-linux-gnueabi > + - ./configure --arch=arm --processor=arm --cross-prefix=arm-linux-gnueabi- Same for arm. --processor=cortex-a15 Thanks, drew > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp > + pci-test gicv2-active gicv3-active > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-ppc64be: > + script: > + - apt-get install -y -qq gcc-powerpc64-linux-gnu > + - ./configure --arch=ppc64 --processor=powerpc --endian=big > + --cross-prefix=powerpc64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup 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: > + script: > + - apt-get install -y -qq gcc-powerpc64-linux-gnu > + - ./configure --arch=ppc64 --processor=powerpc --endian=little > + --cross-prefix=powerpc64-linux-gnu- > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + selftest-setup 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-s390x: > + script: > + - apt-get install -y -qq gcc-s390x-linux-gnu > + - ./configure --arch=s390x --processor=s390x --cross-prefix=s390x-linux-gnu- > + - make -j2 > + > +build-x86_64: > + script: > + - ./configure --arch=x86_64 --processor=x86_64 > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + ioapic-split ioapic smptest smptest3 vmexit_cpuid vmexit_mov_from_cr8 > + vmexit_mov_to_cr8 vmexit_inl_pmtimer vmexit_ipi vmexit_ipi_halt > + vmexit_ple_round_robin vmexit_tscdeadline vmexit_tscdeadline_immed > + eventinj msr port80 sieve tsc rmap_chain umip hyperv_stimer intel_iommu > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > + > +build-i386: > + script: > + - apt-get install -y -qq gcc-multilib > + - ./configure --arch=i386 --processor=i386 > + - make -j2 > + - ACCEL=tcg ./run_tests.sh > + eventinj port80 sieve tsc taskswitch umip hyperv_stimer > + | tee results.txt > + - if grep -q FAIL results.txt ; then exit 1 ; fi > -- > 1.8.3.1 >
On 11/03/2019 13.34, Andrew Jones wrote: > On Fri, Mar 01, 2019 at 07:39:15AM +0100, Thomas Huth wrote: >> When changing common code of the kvm-unit-tests, one should make sure that >> the tests still compile fine for all target architectures afterwards. But >> compiling kvm-unit-tests for all target architectures manually is cumbersome. >> For people like me who store their git trees on GitLab, this can be done >> automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- >> matic builds are now triggered on each push to a kvm-unit-test repository on >> gitlab.com. Additionally, the script also runs the tests that can be executed >> with QEMU TCG (except for s390x, since the QEMU package of the CI container >> currently does not provide the required s390-ccw bios here). >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> An example output can be found here: >> https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 >> >> .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 78 insertions(+) >> create mode 100644 .gitlab-ci.yml >> >> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml >> new file mode 100644 >> index 0000000..bc6ca0e >> --- /dev/null >> +++ b/.gitlab-ci.yml >> @@ -0,0 +1,78 @@ >> +before_script: >> + - apt-get update -qq >> + - apt-get install -y -qq qemu-system >> + >> +build-aarch64: >> + script: >> + - apt-get install -y -qq gcc-aarch64-linux-gnu >> + - ./configure --arch=aarch64 --processor=arm64 > > If we're explicitly selecting the processor, then we should use the one > that configure will fix it up to. > > --processor=cortex-a57 ok ... or simply omit the --processor parameter? >> + --cross-prefix=aarch64-linux-gnu- >> + - make -j2 >> + - ACCEL=tcg ./run_tests.sh >> + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp >> + pci-test gicv2-active gicv3-active timer > > Any reason to just pick the 'active' tests from the gic tests? And to drop > PMU and PSCI tests? The other tests were not working with TCG for me (and KVM is not available in these CI containers). Thomas
On Mon, Mar 11, 2019 at 01:40:33PM +0100, Thomas Huth wrote: > On 11/03/2019 13.34, Andrew Jones wrote: > > On Fri, Mar 01, 2019 at 07:39:15AM +0100, Thomas Huth wrote: > >> When changing common code of the kvm-unit-tests, one should make sure that > >> the tests still compile fine for all target architectures afterwards. But > >> compiling kvm-unit-tests for all target architectures manually is cumbersome. > >> For people like me who store their git trees on GitLab, this can be done > >> automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- > >> matic builds are now triggered on each push to a kvm-unit-test repository on > >> gitlab.com. Additionally, the script also runs the tests that can be executed > >> with QEMU TCG (except for s390x, since the QEMU package of the CI container > >> currently does not provide the required s390-ccw bios here). > >> > >> Signed-off-by: Thomas Huth <thuth@redhat.com> > >> --- > >> An example output can be found here: > >> https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 > >> > >> .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > >> 1 file changed, 78 insertions(+) > >> create mode 100644 .gitlab-ci.yml > >> > >> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > >> new file mode 100644 > >> index 0000000..bc6ca0e > >> --- /dev/null > >> +++ b/.gitlab-ci.yml > >> @@ -0,0 +1,78 @@ > >> +before_script: > >> + - apt-get update -qq > >> + - apt-get install -y -qq qemu-system > >> + > >> +build-aarch64: > >> + script: > >> + - apt-get install -y -qq gcc-aarch64-linux-gnu > >> + - ./configure --arch=aarch64 --processor=arm64 > > > > If we're explicitly selecting the processor, then we should use the one > > that configure will fix it up to. > > > > --processor=cortex-a57 > > ok ... or simply omit the --processor parameter? yeah, that's fine too. > > >> + --cross-prefix=aarch64-linux-gnu- > >> + - make -j2 > >> + - ACCEL=tcg ./run_tests.sh > >> + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp > >> + pci-test gicv2-active gicv3-active timer > > > > Any reason to just pick the 'active' tests from the gic tests? And to drop > > PMU and PSCI tests? > > The other tests were not working with TCG for me (and KVM is not > available in these CI containers). I just tried on my notebook with tcg and see the gicv2-mmio tests fail. I now recall they always failed on tcg, so it's good to remove them. The gicv?-ipi tests work though. I also see that on arm the pmu test is segfaulting. That appears to be a regression in qemu that I wasn't aware of until now. The pmu test works on AArch64. The PSCI tests worked for me on both arm and aarch64. It also looks like that since the qemu switch to kconfig we no longer build pci-testdev for arm/aarch64. So pci-test is just resulting in SKIP now. Thanks, drew
On 11/03/2019 16.04, Andrew Jones wrote: > On Mon, Mar 11, 2019 at 01:40:33PM +0100, Thomas Huth wrote: >> On 11/03/2019 13.34, Andrew Jones wrote: >>> On Fri, Mar 01, 2019 at 07:39:15AM +0100, Thomas Huth wrote: >>>> When changing common code of the kvm-unit-tests, one should make sure that >>>> the tests still compile fine for all target architectures afterwards. But >>>> compiling kvm-unit-tests for all target architectures manually is cumbersome. >>>> For people like me who store their git trees on GitLab, this can be done >>>> automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- >>>> matic builds are now triggered on each push to a kvm-unit-test repository on >>>> gitlab.com. Additionally, the script also runs the tests that can be executed >>>> with QEMU TCG (except for s390x, since the QEMU package of the CI container >>>> currently does not provide the required s390-ccw bios here). >>>> >>>> Signed-off-by: Thomas Huth <thuth@redhat.com> >>>> --- >>>> An example output can be found here: >>>> https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 >>>> >>>> .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>> 1 file changed, 78 insertions(+) >>>> create mode 100644 .gitlab-ci.yml >>>> >>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml >>>> new file mode 100644 >>>> index 0000000..bc6ca0e >>>> --- /dev/null >>>> +++ b/.gitlab-ci.yml >>>> @@ -0,0 +1,78 @@ >>>> +before_script: >>>> + - apt-get update -qq >>>> + - apt-get install -y -qq qemu-system >>>> + >>>> +build-aarch64: >>>> + script: >>>> + - apt-get install -y -qq gcc-aarch64-linux-gnu >>>> + - ./configure --arch=aarch64 --processor=arm64 >>> >>> If we're explicitly selecting the processor, then we should use the one >>> that configure will fix it up to. >>> >>> --processor=cortex-a57 >> >> ok ... or simply omit the --processor parameter? > > yeah, that's fine too. > >> >>>> + --cross-prefix=aarch64-linux-gnu- >>>> + - make -j2 >>>> + - ACCEL=tcg ./run_tests.sh >>>> + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp >>>> + pci-test gicv2-active gicv3-active timer >>> >>> Any reason to just pick the 'active' tests from the gic tests? And to drop >>> PMU and PSCI tests? >> >> The other tests were not working with TCG for me (and KVM is not >> available in these CI containers). > > I just tried on my notebook with tcg and see the gicv2-mmio tests fail. I > now recall they always failed on tcg, so it's good to remove them. The > gicv?-ipi tests work though. I just kicked another CI build, and with the gitlab container, they are failing: https://gitlab.com/huth/kvm-unit-tests/-/jobs/175400544 https://gitlab.com/huth/kvm-unit-tests/-/jobs/175400545 Maybe it's due to the old version of QEMU that is used there (v2.8) ? > I also see that on arm the pmu test is segfaulting. That one works on gitlab :-) > The PSCI tests worked for me on both arm and aarch64. They are marked as SKIP on gitlab. I can keep them in the list, that should not harm, then it gets at least tested if they ever bump the version of QEMU that is available there... > It also looks like that since the qemu switch to kconfig we no longer > build pci-testdev for arm/aarch64. So pci-test is just resulting in SKIP > now. Yes, that's still missing, indeed ... I can add it to my " Kconfig dependencies for ARM machines" series, but I'm afraid it will likely miss the 4.0 softfreeze deadline tomorrow. Maybe better you send a CONFIG_TEST_DEVICES=y patch for default-configs/arm-softmmu.mak instead... Thomas
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..bc6ca0e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,78 @@ +before_script: + - apt-get update -qq + - apt-get install -y -qq qemu-system + +build-aarch64: + script: + - apt-get install -y -qq gcc-aarch64-linux-gnu + - ./configure --arch=aarch64 --processor=arm64 + --cross-prefix=aarch64-linux-gnu- + - make -j2 + - ACCEL=tcg ./run_tests.sh + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp + pci-test gicv2-active gicv3-active timer + | tee results.txt + - if grep -q FAIL results.txt ; then exit 1 ; fi + +build-arm: + script: + - apt-get install -y -qq gcc-arm-linux-gnueabi + - ./configure --arch=arm --processor=arm --cross-prefix=arm-linux-gnueabi- + - make -j2 + - ACCEL=tcg ./run_tests.sh + selftest-setup selftest-vectors-kernel selftest-vectors-user selftest-smp + pci-test gicv2-active gicv3-active + | tee results.txt + - if grep -q FAIL results.txt ; then exit 1 ; fi + +build-ppc64be: + script: + - apt-get install -y -qq gcc-powerpc64-linux-gnu + - ./configure --arch=ppc64 --processor=powerpc --endian=big + --cross-prefix=powerpc64-linux-gnu- + - make -j2 + - ACCEL=tcg ./run_tests.sh + selftest-setup 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: + script: + - apt-get install -y -qq gcc-powerpc64-linux-gnu + - ./configure --arch=ppc64 --processor=powerpc --endian=little + --cross-prefix=powerpc64-linux-gnu- + - make -j2 + - ACCEL=tcg ./run_tests.sh + selftest-setup 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-s390x: + script: + - apt-get install -y -qq gcc-s390x-linux-gnu + - ./configure --arch=s390x --processor=s390x --cross-prefix=s390x-linux-gnu- + - make -j2 + +build-x86_64: + script: + - ./configure --arch=x86_64 --processor=x86_64 + - make -j2 + - ACCEL=tcg ./run_tests.sh + ioapic-split ioapic smptest smptest3 vmexit_cpuid vmexit_mov_from_cr8 + vmexit_mov_to_cr8 vmexit_inl_pmtimer vmexit_ipi vmexit_ipi_halt + vmexit_ple_round_robin vmexit_tscdeadline vmexit_tscdeadline_immed + eventinj msr port80 sieve tsc rmap_chain umip hyperv_stimer intel_iommu + | tee results.txt + - if grep -q FAIL results.txt ; then exit 1 ; fi + +build-i386: + script: + - apt-get install -y -qq gcc-multilib + - ./configure --arch=i386 --processor=i386 + - make -j2 + - ACCEL=tcg ./run_tests.sh + eventinj port80 sieve tsc taskswitch umip hyperv_stimer + | tee results.txt + - if grep -q FAIL results.txt ; then exit 1 ; fi
When changing common code of the kvm-unit-tests, one should make sure that the tests still compile fine for all target architectures afterwards. But compiling kvm-unit-tests for all target architectures manually is cumbersome. For people like me who store their git trees on GitLab, this can be done automatically via a CI system instead. Using the .gitlab-ci.yml file, auto- matic builds are now triggered on each push to a kvm-unit-test repository on gitlab.com. Additionally, the script also runs the tests that can be executed with QEMU TCG (except for s390x, since the QEMU package of the CI container currently does not provide the required s390-ccw bios here). Signed-off-by: Thomas Huth <thuth@redhat.com> --- An example output can be found here: https://gitlab.com/huth/kvm-unit-tests/pipelines/49788391 .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .gitlab-ci.yml