2020-03-24 19:01:12 +08:00
|
|
|
variables:
|
2020-03-24 20:04:08 +08:00
|
|
|
GIT_DEPTH: 100
|
2020-03-24 19:01:12 +08:00
|
|
|
|
2020-03-06 23:38:36 +08:00
|
|
|
stages:
|
2020-03-06 22:56:42 +08:00
|
|
|
- prebuild
|
2020-03-07 00:29:03 +08:00
|
|
|
- native_build
|
2020-03-06 23:38:36 +08:00
|
|
|
- cross_build
|
|
|
|
|
2020-03-27 23:40:05 +08: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-31 00:29:06 +08:00
|
|
|
export CCACHE_BASEDIR="$(pwd)"
|
|
|
|
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
|
|
|
export CCACHE_MAXSIZE="500M"
|
|
|
|
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
|
2020-03-06 23:38:36 +08:00
|
|
|
|
2020-03-07 00:29:03 +08: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 23:01:43 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- ccache/
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
before_script:
|
2020-03-27 23:40:05 +08:00
|
|
|
- *script_variables
|
2020-03-07 00:29:03 +08:00
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../autogen.sh || (cat config.log && exit 1)
|
2020-03-27 23:40:05 +08:00
|
|
|
- $MAKE distcheck
|
2020-03-07 00:29:03 +08: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 21:14:57 +08:00
|
|
|
# Default cross build jobs that are always run
|
2020-03-06 23:38:36 +08:00
|
|
|
.cross_build_default_job_template: &cross_build_default_job_definition
|
|
|
|
stage: cross_build
|
2020-03-25 23:01:43 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- ccache/
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
before_script:
|
2020-03-27 23:40:05 +08:00
|
|
|
- *script_variables
|
2019-01-26 01:38:53 +08:00
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
|
2020-03-27 23:40:05 +08:00
|
|
|
- $MAKE
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-25 21:14:57 +08: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-26 01:38:53 +08:00
|
|
|
|
2020-03-07 00:29:03 +08: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 20:06:56 +08:00
|
|
|
x64-fedora-32:
|
|
|
|
<<: *native_build_default_job_definition
|
|
|
|
image: quay.io/libvirt/buildenv-libvirt-fedora-32:latest
|
|
|
|
|
2020-03-07 00:29:03 +08: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 20:06:56 +08:00
|
|
|
x64-ubuntu-2004:
|
|
|
|
<<: *native_build_default_job_definition
|
|
|
|
image: quay.io/libvirt/buildenv-libvirt-ubuntu-2004:latest
|
|
|
|
|
2020-03-07 00:29:03 +08:00
|
|
|
|
|
|
|
# Cross compiled build jobs
|
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
armv6l-debian-9:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-armv6l:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
mips64el-debian-9:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips64el:latest
|
2019-07-11 18:34:50 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
mips-debian-9:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-12-13 19:56:24 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
aarch64-debian-10:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-aarch64:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
ppc64le-debian-10:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-ppc64le:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
s390x-debian-10:
|
2020-03-06 23:38:36 +08:00
|
|
|
<<: *cross_build_default_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-s390x:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
armv7l-debian-sid:
|
2020-03-06 23:38:36 +08:00
|
|
|
<<: *cross_build_default_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-armv7l:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
i686-debian-sid:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-08-19 18:45:16 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-i686:latest
|
2019-01-26 01:38:53 +08:00
|
|
|
|
2020-03-07 02:34:45 +08:00
|
|
|
mipsel-debian-sid:
|
2020-03-25 21:14:57 +08:00
|
|
|
<<: *cross_build_extra_job_definition
|
2019-12-13 19:56:24 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-mipsel:latest
|
2020-03-06 22:56:42 +08:00
|
|
|
|
2020-05-04 20:06:56 +08:00
|
|
|
mingw32-fedora-rawhide:
|
2020-03-24 22:23:27 +08:00
|
|
|
<<: *cross_build_default_job_definition
|
2020-05-04 20:06:56 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw32:latest
|
2020-03-24 22:23:27 +08:00
|
|
|
|
2020-05-04 20:06:56 +08:00
|
|
|
mingw64-fedora-rawhide:
|
2020-03-24 22:23:27 +08:00
|
|
|
<<: *cross_build_default_job_definition
|
2020-05-04 20:06:56 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw64:latest
|
2020-03-24 22:23:27 +08:00
|
|
|
|
|
|
|
|
2020-03-06 22:56:42 +08: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 23:40:05 +08:00
|
|
|
before_script:
|
|
|
|
- *script_variables
|
2020-03-06 22:56:42 +08:00
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../autogen.sh --prefix=$(pwd)/../vroot || (cat config.log && exit 1)
|
2020-03-27 23:40:05 +08:00
|
|
|
- $MAKE -C docs
|
|
|
|
- $MAKE -C docs install
|
2020-03-06 22:56:42 +08:00
|
|
|
- cd ..
|
|
|
|
- mv vroot/share/doc/libvirt/html/ website
|
2020-05-05 00:21:35 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
|
2020-03-06 22:56:42 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Website'
|
|
|
|
name: 'website'
|
|
|
|
when: on_success
|
|
|
|
expire_in: 30 days
|
|
|
|
paths:
|
|
|
|
- website
|
2020-03-24 22:42:14 +08:00
|
|
|
|
|
|
|
|
2020-03-26 20:07:34 +08:00
|
|
|
codestyle:
|
|
|
|
stage: prebuild
|
2020-03-27 23:40:05 +08:00
|
|
|
before_script:
|
|
|
|
- *script_variables
|
2020-03-26 20:07:34 +08:00
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../autogen.sh || (cat config.log && exit 1)
|
2020-03-27 23:40:05 +08:00
|
|
|
- $MAKE syntax-check
|
2020-05-05 00:21:35 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
|
2020-03-26 20:07:34 +08:00
|
|
|
|
|
|
|
|
2020-03-24 22:42:14 +08: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 23:40:05 +08:00
|
|
|
before_script:
|
|
|
|
- *script_variables
|
2020-03-24 22:42:14 +08:00
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../autogen.sh || (cat config.log && exit 1)
|
2020-03-27 23:40:05 +08:00
|
|
|
- $MAKE -C src generated-sources
|
|
|
|
- $MAKE -C po libvirt.pot
|
2020-03-24 22:42:14 +08:00
|
|
|
- cd ..
|
2020-06-04 21:26:39 +08:00
|
|
|
- cp po/libvirt.pot libvirt.pot
|
2020-05-05 00:21:35 +08:00
|
|
|
image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
|
2020-03-24 22:42:14 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Potfile'
|
|
|
|
name: 'potfile'
|
|
|
|
when: on_success
|
|
|
|
expire_in: 30 days
|
|
|
|
paths:
|
|
|
|
- libvirt.pot
|
2020-03-26 18:46:47 +08:00
|
|
|
|
|
|
|
|
2020-05-01 18:57:33 +08: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 18:46:47 +08:00
|
|
|
stage: prebuild
|
2020-05-01 18:57:33 +08:00
|
|
|
image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
|
2020-03-26 18:46:47 +08:00
|
|
|
script:
|
2020-05-01 18:57:33 +08:00
|
|
|
- /check-dco
|
2020-03-26 18:46:47 +08:00
|
|
|
except:
|
2020-05-01 18:57:33 +08:00
|
|
|
variables:
|
|
|
|
- $CI_PROJECT_NAMESPACE == 'libvirt'
|