2020-03-24 11:01:12 +00:00
variables :
2020-03-24 12:04:08 +00:00
GIT_DEPTH : 100
2020-03-24 11:01:12 +00:00
2020-03-06 15:38:36 +00:00
stages :
2020-03-06 14:56:42 +00:00
- prebuild
2020-03-06 16:29:03 +00:00
- native_build
2020-03-06 15:38:36 +00:00
- cross_build
2020-03-27 16:40:05 +01:00
.script_variables : &script_variables |
export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)"
gitlab: Enable improved ccache usage
Setting CC="ccache cc" works in most cases, but sometimes it will
break the build: in particular, we have experienced issues in the
past with that approach when using cgo to build our Go bindings.
A more robust approach is to have a directory containing symlinks
from the compiler name to the ccache binary: in that case, ccache
itself will invoke the compiler, and the build system will be none
the wiser.
Since libvirt-ci commit 2563aebb6c5c, container images contain a
suitable symlink directory, so all that's needed to enable the new
approach is to add this directory to $PATH.
Since we're touching this anyway, we make a few more changes:
$CCACHE_DIR is no longer created manually, because ccache will
take care of creating it for us if it doesn't already exist; the
ccache setup is moved out of the job template and into
script_variables, removing unnecessary duplication; a limit is
set on the size of the cache (500 MB, which is twice the amount
used by a fresh build on my Fedora 31 machine).
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2020-03-30 18:29:06 +02:00
export CCACHE_BASEDIR="$(pwd)"
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
export CCACHE_MAXSIZE="500M"
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
2020-03-06 15:38:36 +00:00
2020-03-06 16:29:03 +00:00
# Common templates
# Default native build jobs that are always run
.native_build_default_job_template : &native_build_default_job_definition
stage : native_build
2020-03-25 15:01:43 +00:00
cache :
paths :
- ccache/
key : "$CI_JOB_NAME"
before_script :
2020-03-27 16:40:05 +01:00
- *script_variables
2020-03-06 16:29:03 +00:00
script :
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
2020-03-27 16:40:05 +01:00
- $MAKE distcheck
2020-03-06 16:29:03 +00:00
# Extra native build jobs that are only run post-merge, or
# when code is pushed to a branch with "ci-full-" name prefix
.native_build_extra_job_template : &native_build_extra_job_definition
<< : *native_build_default_job_definition
only :
- master
- /^ci-full-.*$/
2020-03-25 13:14:57 +00:00
# Default cross build jobs that are always run
2020-03-06 15:38:36 +00:00
.cross_build_default_job_template : &cross_build_default_job_definition
stage : cross_build
2020-03-25 15:01:43 +00:00
cache :
paths :
- ccache/
key : "$CI_JOB_NAME"
before_script :
2020-03-27 16:40:05 +01:00
- *script_variables
2019-01-25 17:38:53 +00:00
script :
- mkdir build
- cd build
- ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
2020-03-27 16:40:05 +01:00
- $MAKE
2019-01-25 17:38:53 +00:00
2020-03-25 13:14:57 +00:00
# Extra cross build jobs that are only run post-merge, or
# when code is pushed to a branch with "ci-full-" name prefix
.cross_build_extra_job_template : &cross_build_extra_job_definition
<< : *cross_build_default_job_definition
only :
- master
- /^ci-full-.*$/
2019-01-25 17:38:53 +00:00
2020-03-06 16:29:03 +00:00
# Native architecture build + test jobs
x64-debian-9 :
<< : *native_build_extra_job_definition
image : quay.io/libvirt/buildenv-libvirt-debian-9:latest
x64-debian-10 :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-debian-10:latest
x64-debian-sid :
<< : *native_build_extra_job_definition
image : quay.io/libvirt/buildenv-libvirt-debian-sid:latest
x64-centos-7 :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-centos-7:latest
x64-centos-8 :
<< : *native_build_extra_job_definition
image : quay.io/libvirt/buildenv-libvirt-centos-8:latest
x64-fedora-31 :
<< : *native_build_extra_job_definition
image : quay.io/libvirt/buildenv-libvirt-fedora-31:latest
2020-05-04 13:06:56 +01:00
x64-fedora-32 :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-fedora-32:latest
2020-03-06 16:29:03 +00:00
x64-fedora-rawhide :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-fedora-rawhide:latest
x64-opensuse-151 :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-opensuse-151:latest
x64-ubuntu-1804 :
<< : *native_build_extra_job_definition
image : quay.io/libvirt/buildenv-libvirt-ubuntu-1804:latest
2020-05-04 13:06:56 +01:00
x64-ubuntu-2004 :
<< : *native_build_default_job_definition
image : quay.io/libvirt/buildenv-libvirt-ubuntu-2004:latest
2020-03-06 16:29:03 +00:00
# Cross compiled build jobs
2020-03-06 18:34:45 +00:00
armv6l-debian-9 :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-9-cross-armv6l:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
mips64el-debian-9 :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips64el:latest
2019-07-11 12:34:50 +02:00
2020-03-06 18:34:45 +00:00
mips-debian-9 :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-12-13 12:56:24 +01:00
image : quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
aarch64-debian-10 :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-10-cross-aarch64:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
ppc64le-debian-10 :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-10-cross-ppc64le:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
s390x-debian-10 :
2020-03-06 15:38:36 +00:00
<< : *cross_build_default_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-10-cross-s390x:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
armv7l-debian-sid :
2020-03-06 15:38:36 +00:00
<< : *cross_build_default_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-sid-cross-armv7l:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
i686-debian-sid :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-08-19 12:45:16 +02:00
image : quay.io/libvirt/buildenv-libvirt-debian-sid-cross-i686:latest
2019-01-25 17:38:53 +00:00
2020-03-06 18:34:45 +00:00
mipsel-debian-sid :
2020-03-25 13:14:57 +00:00
<< : *cross_build_extra_job_definition
2019-12-13 12:56:24 +01:00
image : quay.io/libvirt/buildenv-libvirt-debian-sid-cross-mipsel:latest
2020-03-06 14:56:42 +00:00
2020-05-04 13:06:56 +01:00
mingw32-fedora-rawhide :
2020-03-24 14:23:27 +00:00
<< : *cross_build_default_job_definition
2020-05-04 13:06:56 +01:00
image : quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw32:latest
2020-03-24 14:23:27 +00:00
2020-05-04 13:06:56 +01:00
mingw64-fedora-rawhide :
2020-03-24 14:23:27 +00:00
<< : *cross_build_default_job_definition
2020-05-04 13:06:56 +01:00
image : quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw64:latest
2020-03-24 14:23:27 +00:00
2020-03-06 14:56:42 +00:00
# This artifact published by this job is downloaded by libvirt.org to
# be deployed to the web root:
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
website :
stage : prebuild
2020-03-27 16:40:05 +01:00
before_script :
- *script_variables
2020-03-06 14:56:42 +00:00
script :
- mkdir build
- cd build
- ../autogen.sh --prefix=$(pwd)/../vroot || (cat config.log && exit 1)
2020-03-27 16:40:05 +01:00
- $MAKE -C docs
- $MAKE -C docs install
2020-03-06 14:56:42 +00:00
- cd ..
- mv vroot/share/doc/libvirt/html/ website
2020-05-04 17:21:35 +01:00
image : quay.io/libvirt/buildenv-libvirt-centos-8:latest
2020-03-06 14:56:42 +00:00
artifacts :
expose_as : 'Website'
name : 'website'
when : on_success
expire_in : 30 days
paths :
- website
2020-03-24 14:42:14 +00:00
2020-03-26 12:07:34 +00:00
codestyle :
stage : prebuild
2020-03-27 16:40:05 +01:00
before_script :
- *script_variables
2020-03-26 12:07:34 +00:00
script :
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
2020-03-27 16:40:05 +01:00
- $MAKE syntax-check
2020-05-04 17:21:35 +01:00
image : quay.io/libvirt/buildenv-libvirt-centos-8:latest
2020-03-26 12:07:34 +00:00
2020-03-24 14:42:14 +00:00
# This artifact published by this job is downloaded to push to Weblate
# for translation usage:
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile
potfile :
stage : prebuild
only :
- master
2020-03-27 16:40:05 +01:00
before_script :
- *script_variables
2020-03-24 14:42:14 +00:00
script :
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
2020-03-27 16:40:05 +01:00
- $MAKE -C src generated-sources
- $MAKE -C po libvirt.pot
2020-03-24 14:42:14 +00:00
- cd ..
- mv build/po/libvirt.pot libvirt.pot
2020-05-04 17:21:35 +01:00
image : quay.io/libvirt/buildenv-libvirt-centos-8:latest
2020-03-24 14:42:14 +00:00
artifacts :
expose_as : 'Potfile'
name : 'potfile'
when : on_success
expire_in : 30 days
paths :
- libvirt.pot
2020-03-26 10:46:47 +00:00
2020-05-01 11:57:33 +01:00
# Check that all commits are signed-off for the DCO.
# Skip on "libvirt" namespace, since we only need to run
# this test on developer's personal forks from which
# merge requests are submitted
check-dco :
2020-03-26 10:46:47 +00:00
stage : prebuild
2020-05-01 11:57:33 +01:00
image : registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
2020-03-26 10:46:47 +00:00
script :
2020-05-01 11:57:33 +01:00
- /check-dco
2020-03-26 10:46:47 +00:00
except :
2020-05-01 11:57:33 +01:00
variables :
- $CI_PROJECT_NAMESPACE == 'libvirt'