libvirt/.gitlab-ci.yml
Andrea Bolognani cab35ae380 gitlab: Add script_variables and define $MAKEFLAGS there
This new template provides a standardized place where environment
variables which are not static, but rather depend on the output of
some shell command, can be defined for later use. This pattern is
already used in libosinfo's GitLab CI integration.

Defining $MAKEFLAGS there means we don't need to call getconf over
and over, and the actual build steps don't end up drowned in the
noise.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2020-03-27 19:08:50 +01:00

244 lines
6.4 KiB
YAML

variables:
MAKE: make
GIT_DEPTH: 100
stages:
- prebuild
- native_build
- cross_build
.script_variables: &script_variables |
export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)"
# Common templates
# Default native build jobs that are always run
.native_build_default_job_template: &native_build_default_job_definition
stage: native_build
cache:
paths:
- ccache/
key: "$CI_JOB_NAME"
before_script:
- *script_variables
- mkdir -p ccache
- export CC="ccache gcc"
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
script:
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
- $MAKE distcheck
# 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-.*$/
# Default cross build jobs that are always run
.cross_build_default_job_template: &cross_build_default_job_definition
stage: cross_build
cache:
paths:
- ccache/
key: "$CI_JOB_NAME"
before_script:
- *script_variables
- mkdir -p ccache
- export CC="ccache ${ABI}-gcc"
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
script:
- mkdir build
- cd build
- ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
- $MAKE
# 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-.*$/
# 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-30:
<<: *native_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-fedora-30:latest
x64-fedora-31:
<<: *native_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
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-1604:
<<: *native_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-ubuntu-1604:latest
x64-ubuntu-1804:
<<: *native_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-ubuntu-1804:latest
# Cross compiled build jobs
armv6l-debian-9:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-armv6l:latest
mips64el-debian-9:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips64el:latest
mips-debian-9:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips:latest
aarch64-debian-10:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-aarch64:latest
ppc64le-debian-10:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-ppc64le:latest
s390x-debian-10:
<<: *cross_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-s390x:latest
armv7l-debian-sid:
<<: *cross_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-armv7l:latest
i686-debian-sid:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-i686:latest
mipsel-debian-sid:
<<: *cross_build_extra_job_definition
image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-mipsel:latest
mingw32-fedora-30:
<<: *cross_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-fedora-30-cross-mingw32:latest
mingw64-fedora-30:
<<: *cross_build_default_job_definition
image: quay.io/libvirt/buildenv-libvirt-fedora-30-cross-mingw64:latest
# 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
before_script:
- *script_variables
script:
- mkdir build
- cd build
- ../autogen.sh --prefix=$(pwd)/../vroot || (cat config.log && exit 1)
- $MAKE -C docs
- $MAKE -C docs install
- cd ..
- mv vroot/share/doc/libvirt/html/ website
image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
artifacts:
expose_as: 'Website'
name: 'website'
when: on_success
expire_in: 30 days
paths:
- website
codestyle:
stage: prebuild
before_script:
- *script_variables
script:
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
- $MAKE syntax-check
image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
# 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
before_script:
- *script_variables
script:
- mkdir build
- cd build
- ../autogen.sh || (cat config.log && exit 1)
- $MAKE -C src generated-sources
- $MAKE -C po libvirt.pot
- cd ..
- mv build/po/libvirt.pot libvirt.pot
image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
artifacts:
expose_as: 'Potfile'
name: 'potfile'
when: on_success
expire_in: 30 days
paths:
- libvirt.pot
# Check that all commits are signed-off for the DCO. Skip
# on master branch and -maint branches, since we only need
# to test developer's personal branches.
dco:
stage: prebuild
image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
before_script:
- *script_variables
script:
- ./scripts/require-dco.py
only:
- branches
except:
- /^v.*-maint$/
- master