diff mbox series

[kvm-unit-tests] Add a .gitlab-ci.yml file for automatic CI testing on GitLab instances

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

Commit Message

Thomas Huth March 1, 2019, 6:39 a.m. UTC
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

Comments

David Hildenbrand March 1, 2019, 8:22 a.m. UTC | #1
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
>
Thomas Huth March 1, 2019, 8:35 a.m. UTC | #2
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
Andrew Jones March 11, 2019, 12:34 p.m. UTC | #3
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
>
Thomas Huth March 11, 2019, 12:40 p.m. UTC | #4
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
Andrew Jones March 11, 2019, 3:04 p.m. UTC | #5
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
Thomas Huth March 11, 2019, 3:38 p.m. UTC | #6
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 mbox series

Patch

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