Commit c962864f authored by Daniel P. Berrangé's avatar Daniel P. Berrangé Committed by Alex Bennée
Browse files

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: default avatarDaniel P. Berrangé <berrange@redhat.com>
Message-Id: <20200622153318.751107-4-berrange@redhat.com>
[AJB: tweak naming convention]
Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Acked-by: default avatarThomas Huth <thuth@redhat.com>
Message-Id: <20200701135652.1366-23-alex.bennee@linaro.org>
parent fa821f23
Loading
Loading
Loading
Loading
+81 −106
Original line number Diff line number Diff line
@@ -9,77 +9,62 @@ include:
  - local: '/.gitlab-ci.d/opensbi.yml'
  - local: '/.gitlab-ci.d/containers.yml'

.update_apt_template: &before_script_apt
 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
.native_build_job_template: &native_build_job_definition
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  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)

build-system1:
 stage: build
 image: ubuntu:19.10
 <<: *before_script_apt
  script:
 - apt-get install -y -qq libgtk-3-dev libvte-dev nettle-dev libcacard-dev
      libusb-dev libvde-dev libspice-protocol-dev libgl1-mesa-dev libvdeplug-dev
    - mkdir build
    - 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"
    - 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" check
    - make -j"$JOBS" $MAKE_CHECK_ARGS

build-system1:
  <<: *native_build_job_definition
  variables:
    IMAGE: ubuntu2004
    TARGETS: 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_CHECK_ARGS: check

build-system2:
 stage: build
 image: fedora:latest
 <<: *before_script_dnf
 script:
 - yum install -y SDL2-devel libgcrypt-devel brlapi-devel libaio-devel
       libfdt-devel lzo-devel librdmacm-devel libibverbs-devel libibumad-devel
       libzstd-devel
 - 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
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    TARGETS: 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_CHECK_ARGS: check

build-disabled:
 stage: build
 image: fedora:latest
 <<: *before_script_dnf
 script:
 - mkdir build
 - cd build
 - ../configure --enable-werror --disable-rdma --disable-slirp --disable-curl
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --disable-rdma --disable-slirp --disable-curl
      --disable-capstone --disable-live-block-migration --disable-glusterfs
      --disable-replication --disable-coroutine-pool --disable-smartcard
      --disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
      --disable-qom-cast-debug --disable-spice --disable-vhost-vsock
      --disable-vhost-net --disable-vhost-crypto --disable-vhost-user
      --target-list="i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user"
 - make -j"$JOBS"
 - make -j"$JOBS" check-qtest SPEED=slow
    TARGETS: i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user
    MAKE_CHECK_ARGS: check-qtest SPEED=slow

build-tcg-disabled:
 stage: build
 image: centos:8
 <<: *before_script_dnf
  <<: *native_build_job_definition
  variables:
    IMAGE: centos8
  script:
 - dnf install -y clang gtk3-devel libusbx-devel libgcrypt-devel
    - mkdir build
    - cd build
 - ../configure --cc=clang --enable-werror --disable-tcg --audio-drv-list=""
    - ../configure --disable-tcg --audio-drv-list=""
    - make -j"$JOBS"
    - make check-unit
    - make check-qapi-schema
@@ -93,35 +78,26 @@ build-tcg-disabled:
            260 261 262 263 264 270 272 273 277 279

build-user:
 stage: build
 <<: *before_script_apt
 script:
 - mkdir build
 - cd build
 - ../configure --enable-werror --disable-system --disable-guest-agent
  <<: *native_build_job_definition
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --disable-system --disable-guest-agent
      --disable-capstone --disable-slirp --disable-fdt
 - make -j"$JOBS"
 - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
    MAKE_CHECK_ARGS:  run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user

build-clang:
 stage: build
 image: fedora:latest
 <<: *before_script_dnf
 script:
 - yum install -y clang SDL2-devel libattr-devel libcap-ng-devel xfsprogs-devel
       libiscsi-devel libnfs-devel libseccomp-devel gnutls-devel librbd-devel
 - mkdir build
 - 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
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --cc=clang --cxx=clang++
    TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
      ppc-softmmu s390x-softmmu x86_64-softmmu arm-linux-user
    MAKE_CHECK_ARGS: check

build-tci:
 stage: build
 image: centos:8
 <<: *before_script_dnf
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
  script:
    - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
    - mkdir build
@@ -137,5 +113,4 @@ build-tci:
        ./tests/qtest/cdrom-test || exit 1 ;
      done
    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
 - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
   ./tests/qtest/pxe-test -m slow
    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/qtest/pxe-test -m slow