gitlab: convert jobs to use custom built containers

Now that we're building standard container images from
dockerfiles in tests/docker/dockerfiles, we can convert
the build jobs to use them. The key benefit of this is
that a contributor can now more easily replicate the CI
environment on their local machine. The container images
are cached too, so we are not spending time waiting for
the apt-get/dnf package installs to complete.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20200622153318.751107-4-berrange@redhat.com>
[AJB: tweak naming convention]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20200701135652.1366-23-alex.bennee@linaro.org>
This commit is contained in:
Daniel P. Berrangé 2020-07-01 14:56:34 +01:00 committed by Alex Bennée
parent fa821f23e1
commit c962864f1d

View File

@ -9,77 +9,62 @@ include:
- local: '/.gitlab-ci.d/opensbi.yml' - local: '/.gitlab-ci.d/opensbi.yml'
- local: '/.gitlab-ci.d/containers.yml' - local: '/.gitlab-ci.d/containers.yml'
.update_apt_template: &before_script_apt .native_build_job_template: &native_build_job_definition
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
before_script: before_script:
- apt-get update -qq
- apt-get install -y -qq git gcc libglib2.0-dev libpixman-1-dev make
genisoimage
- JOBS=$(expr $(nproc) + 1)
.update_dnf_template: &before_script_dnf
before_script:
- dnf update -y
- dnf install -y bzip2 diffutils gcc git genisoimage findutils glib2-devel
make python3 perl-podlators perl-Test-Harness pixman-devel zlib-devel
- JOBS=$(expr $(nproc) + 1) - JOBS=$(expr $(nproc) + 1)
script:
- mkdir build
- cd build
- if test -n "$TARGETS";
then
../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
else
../configure --enable-werror $CONFIGURE_ARGS ;
fi
- make -j"$JOBS"
- make -j"$JOBS" $MAKE_CHECK_ARGS
build-system1: build-system1:
stage: build <<: *native_build_job_definition
image: ubuntu:19.10 variables:
<<: *before_script_apt IMAGE: ubuntu2004
script: TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu lm32-softmmu
- apt-get install -y -qq libgtk-3-dev libvte-dev nettle-dev libcacard-dev moxie-softmmu microblazeel-softmmu mips64el-softmmu m68k-softmmu ppc-softmmu
libusb-dev libvde-dev libspice-protocol-dev libgl1-mesa-dev libvdeplug-dev riscv64-softmmu sparc-softmmu
- mkdir build MAKE_CHECK_ARGS: check
- cd build
- ../configure --enable-werror --target-list="aarch64-softmmu alpha-softmmu
cris-softmmu hppa-softmmu lm32-softmmu moxie-softmmu microblazeel-softmmu
mips64el-softmmu m68k-softmmu ppc-softmmu riscv64-softmmu sparc-softmmu"
- make -j"$JOBS"
- make -j"$JOBS" check
build-system2: build-system2:
stage: build <<: *native_build_job_definition
image: fedora:latest variables:
<<: *before_script_dnf IMAGE: fedora
script: TARGETS: tricore-softmmu unicore32-softmmu microblaze-softmmu mips-softmmu
- yum install -y SDL2-devel libgcrypt-devel brlapi-devel libaio-devel riscv32-softmmu s390x-softmmu sh4-softmmu sparc64-softmmu x86_64-softmmu
libfdt-devel lzo-devel librdmacm-devel libibverbs-devel libibumad-devel xtensa-softmmu nios2-softmmu or1k-softmmu
libzstd-devel MAKE_CHECK_ARGS: check
- mkdir build
- cd build
- ../configure --enable-werror --target-list="tricore-softmmu unicore32-softmmu
microblaze-softmmu mips-softmmu riscv32-softmmu s390x-softmmu sh4-softmmu
sparc64-softmmu x86_64-softmmu xtensa-softmmu nios2-softmmu or1k-softmmu"
- make -j"$JOBS"
- make -j"$JOBS" check
build-disabled: build-disabled:
stage: build <<: *native_build_job_definition
image: fedora:latest variables:
<<: *before_script_dnf IMAGE: fedora
script: CONFIGURE_ARGS: --disable-rdma --disable-slirp --disable-curl
- mkdir build
- cd build
- ../configure --enable-werror --disable-rdma --disable-slirp --disable-curl
--disable-capstone --disable-live-block-migration --disable-glusterfs --disable-capstone --disable-live-block-migration --disable-glusterfs
--disable-replication --disable-coroutine-pool --disable-smartcard --disable-replication --disable-coroutine-pool --disable-smartcard
--disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm --disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
--disable-qom-cast-debug --disable-spice --disable-vhost-vsock --disable-qom-cast-debug --disable-spice --disable-vhost-vsock
--disable-vhost-net --disable-vhost-crypto --disable-vhost-user --disable-vhost-net --disable-vhost-crypto --disable-vhost-user
--target-list="i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user" TARGETS: i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user
- make -j"$JOBS" MAKE_CHECK_ARGS: check-qtest SPEED=slow
- make -j"$JOBS" check-qtest SPEED=slow
build-tcg-disabled: build-tcg-disabled:
stage: build <<: *native_build_job_definition
image: centos:8 variables:
<<: *before_script_dnf IMAGE: centos8
script: script:
- dnf install -y clang gtk3-devel libusbx-devel libgcrypt-devel
- mkdir build - mkdir build
- cd build - cd build
- ../configure --cc=clang --enable-werror --disable-tcg --audio-drv-list="" - ../configure --disable-tcg --audio-drv-list=""
- make -j"$JOBS" - make -j"$JOBS"
- make check-unit - make check-unit
- make check-qapi-schema - make check-qapi-schema
@ -93,35 +78,26 @@ build-tcg-disabled:
260 261 262 263 264 270 272 273 277 279 260 261 262 263 264 270 272 273 277 279
build-user: build-user:
stage: build <<: *native_build_job_definition
<<: *before_script_apt variables:
script: IMAGE: ubuntu2004
- mkdir build CONFIGURE_ARGS: --disable-system --disable-guest-agent
- cd build
- ../configure --enable-werror --disable-system --disable-guest-agent
--disable-capstone --disable-slirp --disable-fdt --disable-capstone --disable-slirp --disable-fdt
- make -j"$JOBS" MAKE_CHECK_ARGS: run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
- make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
build-clang: build-clang:
stage: build <<: *native_build_job_definition
image: fedora:latest variables:
<<: *before_script_dnf IMAGE: fedora
script: CONFIGURE_ARGS: --cc=clang --cxx=clang++
- yum install -y clang SDL2-devel libattr-devel libcap-ng-devel xfsprogs-devel TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
libiscsi-devel libnfs-devel libseccomp-devel gnutls-devel librbd-devel ppc-softmmu s390x-softmmu x86_64-softmmu arm-linux-user
- mkdir build MAKE_CHECK_ARGS: check
- cd build
- ../configure --cc=clang --cxx=clang++ --enable-werror
--target-list="alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
ppc-softmmu s390x-softmmu x86_64-softmmu arm-linux-user"
- make -j"$JOBS"
- make -j"$JOBS" check
build-tci: build-tci:
stage: build <<: *native_build_job_definition
image: centos:8 variables:
<<: *before_script_dnf IMAGE: fedora
script: script:
- TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64" - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
- mkdir build - mkdir build
@ -137,5 +113,4 @@ build-tci:
./tests/qtest/cdrom-test || exit 1 ; ./tests/qtest/cdrom-test || exit 1 ;
done done
- QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
- QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/qtest/pxe-test -m slow
./tests/qtest/pxe-test -m slow