mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-05 04:41:20 +00:00
552a501d55
FreeBSD 12 was released in December 2018, so according to our platform support policy we can now drop support for the previous major release. It would be going EOL in September anyway. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
614 lines
15 KiB
YAML
614 lines
15 KiB
YAML
variables:
|
|
GIT_DEPTH: 100
|
|
|
|
stages:
|
|
- containers
|
|
- builds
|
|
- sanity_checks
|
|
|
|
.script_variables: &script_variables |
|
|
export CCACHE_BASEDIR="$(pwd)"
|
|
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
|
export CCACHE_MAXSIZE="500M"
|
|
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
|
|
|
|
# Common templates
|
|
|
|
.container_job:
|
|
image: docker:stable
|
|
stage: containers
|
|
needs: []
|
|
services:
|
|
- docker:dind
|
|
rules:
|
|
- if: "$TEMPORARILY_DISABLED"
|
|
allow_failure: true
|
|
- when: on_success
|
|
before_script:
|
|
- export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest"
|
|
- export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt/ci-$NAME:latest"
|
|
- docker info
|
|
- docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
|
|
script:
|
|
- docker pull "$TAG" || docker pull "$COMMON_TAG" || true
|
|
- docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers
|
|
- docker push "$TAG"
|
|
after_script:
|
|
- docker logout
|
|
|
|
# We build many containers which can be useful to debug problems but are not
|
|
# needed for the pipeline itself to complete: those sometimes fail, and when
|
|
# that happens it's mostly because of temporary issues with Debian sid. We
|
|
# don't want those failures to affect the overall pipeline status
|
|
.container_optional_job:
|
|
extends: .container_job
|
|
allow_failure: true
|
|
|
|
.native_build_job:
|
|
stage: builds
|
|
image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
|
|
rules:
|
|
- if: "$TEMPORARILY_DISABLED"
|
|
allow_failure: true
|
|
- when: on_success
|
|
cache:
|
|
paths:
|
|
- ccache/
|
|
key: "$CI_JOB_NAME"
|
|
before_script:
|
|
- *script_variables
|
|
script:
|
|
- meson build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
- if test "$DIST" != "skip";
|
|
then
|
|
ninja -C build dist;
|
|
else
|
|
ninja -C build;
|
|
ninja -C build test;
|
|
fi
|
|
- if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
|
|
then
|
|
rpmbuild --nodeps -ta build/meson-dist/libvirt-*.tar.xz;
|
|
fi
|
|
|
|
# Jobs that we delegate to Cirrus CI because they require an operating
|
|
# system other than Linux. These jobs will only run if the required
|
|
# setup has been performed on the GitLab account (see ci/README.rst).
|
|
#
|
|
# The Cirrus CI configuration is generated by replacing target-specific
|
|
# variables in a generic template: some of these variables are provided
|
|
# when the GitLab CI job is defined, others are taken from a shell
|
|
# snippet generated using lcitool.
|
|
#
|
|
# Note that the $PATH environment variable has to be treated with
|
|
# special care, because we can't just override it at the GitLab CI job
|
|
# definition level or we risk breaking it completely.
|
|
.cirrus_build_job:
|
|
stage: builds
|
|
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
|
needs: []
|
|
script:
|
|
- source ci/cirrus/$NAME.vars
|
|
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
|
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
|
|
-e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g"
|
|
-e "s|[@]CIRRUS_VM_INSTANCE_TYPE@|$CIRRUS_VM_INSTANCE_TYPE|g"
|
|
-e "s|[@]CIRRUS_VM_IMAGE_SELECTOR@|$CIRRUS_VM_IMAGE_SELECTOR|g"
|
|
-e "s|[@]CIRRUS_VM_IMAGE_NAME@|$CIRRUS_VM_IMAGE_NAME|g"
|
|
-e "s|[@]UPDATE_COMMAND@|$UPDATE_COMMAND|g"
|
|
-e "s|[@]INSTALL_COMMAND@|$INSTALL_COMMAND|g"
|
|
-e "s|[@]PATH@|$PATH_EXTRA${PATH_EXTRA:+:}\$PATH|g"
|
|
-e "s|[@]PKG_CONFIG_PATH@|$PKG_CONFIG_PATH|g"
|
|
-e "s|[@]PKGS@|$PKGS|g"
|
|
-e "s|[@]MAKE@|$MAKE|g"
|
|
-e "s|[@]PYTHON@|$PYTHON|g"
|
|
-e "s|[@]PIP3@|$PIP3|g"
|
|
-e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
|
|
<ci/cirrus/build.yml >ci/cirrus/$NAME.yml
|
|
- cat ci/cirrus/$NAME.yml
|
|
- cirrus-run -v --show-build-log always ci/cirrus/$NAME.yml
|
|
rules:
|
|
- if: "$TEMPORARILY_DISABLED"
|
|
allow_failure: true
|
|
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
|
|
|
.cross_build_job:
|
|
stage: builds
|
|
image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
|
|
cache:
|
|
paths:
|
|
- ccache/
|
|
key: "$CI_JOB_NAME"
|
|
rules:
|
|
- if: "$TEMPORARILY_DISABLED"
|
|
allow_failure: true
|
|
- when: on_success
|
|
before_script:
|
|
- *script_variables
|
|
script:
|
|
- meson build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
- ninja -C build
|
|
- if test "$CROSS" = "i686" ; then ninja -C build test ; fi
|
|
|
|
|
|
# Native container build jobs
|
|
|
|
x64-centos-7-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: centos-7
|
|
|
|
x64-centos-8-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: centos-8
|
|
|
|
x64-centos-stream-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: centos-stream
|
|
|
|
x64-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10
|
|
|
|
x64-debian-sid-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-sid
|
|
|
|
x64-fedora-32-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: fedora-32
|
|
|
|
x64-fedora-33-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: fedora-33
|
|
|
|
x64-fedora-rawhide-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: fedora-rawhide
|
|
|
|
x64-opensuse-152-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: opensuse-152
|
|
|
|
x64-ubuntu-1804-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: ubuntu-1804
|
|
|
|
x64-ubuntu-2004-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: ubuntu-2004
|
|
|
|
|
|
# Cross-build containers build jobs
|
|
|
|
aarch64-debian-10-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-10-cross-aarch64
|
|
|
|
armv6l-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10-cross-armv6l
|
|
|
|
armv7l-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10-cross-armv7l
|
|
|
|
i686-debian-10-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-10-cross-i686
|
|
|
|
mips-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10-cross-mips
|
|
|
|
mips64el-debian-10-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-10-cross-mips64el
|
|
|
|
mipsel-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10-cross-mipsel
|
|
|
|
ppc64le-debian-10-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-10-cross-ppc64le
|
|
|
|
s390x-debian-10-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-10-cross-s390x
|
|
|
|
aarch64-debian-sid-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-sid-cross-aarch64
|
|
|
|
armv6l-debian-sid-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-sid-cross-armv6l
|
|
|
|
armv7l-debian-sid-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-sid-cross-armv7l
|
|
|
|
i686-debian-sid-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-sid-cross-i686
|
|
|
|
mips64el-debian-sid-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-sid-cross-mips64el
|
|
|
|
mipsel-debian-sid-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-sid-cross-mipsel
|
|
|
|
ppc64le-debian-sid-container:
|
|
extends: .container_optional_job
|
|
variables:
|
|
NAME: debian-sid-cross-ppc64le
|
|
|
|
s390x-debian-sid-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: debian-sid-cross-s390x
|
|
|
|
mingw32-fedora-rawhide-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: fedora-rawhide-cross-mingw32
|
|
|
|
mingw64-fedora-rawhide-container:
|
|
extends: .container_job
|
|
variables:
|
|
NAME: fedora-rawhide-cross-mingw64
|
|
|
|
|
|
# Native architecture build + test jobs
|
|
|
|
x64-debian-10:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
|
|
x64-debian-10-clang:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CC: clang
|
|
|
|
x64-debian-sid:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-debian-sid-container
|
|
variables:
|
|
NAME: debian-sid
|
|
|
|
x64-centos-7:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-centos-7-container
|
|
variables:
|
|
NAME: centos-7
|
|
# meson dist fails on CentOS 7 because of old git that fails to clone
|
|
# from shallow git repository which is done when running meson dist
|
|
DIST: skip
|
|
RPM: skip
|
|
|
|
x64-centos-8:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-centos-8-container
|
|
variables:
|
|
NAME: centos-8
|
|
RPM: skip
|
|
|
|
x64-centos-8-clang:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-centos-8-container
|
|
variables:
|
|
NAME: centos-8
|
|
CC: clang
|
|
RPM: skip
|
|
|
|
x64-centos-stream:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-centos-stream-container
|
|
variables:
|
|
NAME: centos-stream
|
|
RPM: skip
|
|
|
|
x64-fedora-32:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-fedora-32-container
|
|
variables:
|
|
NAME: fedora-32
|
|
RPM: skip
|
|
|
|
x64-fedora-33:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-fedora-33-container
|
|
variables:
|
|
NAME: fedora-33
|
|
|
|
x64-fedora-rawhide:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-fedora-rawhide-container
|
|
variables:
|
|
NAME: fedora-rawhide
|
|
# Temp workaround until we see what resolution is for
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1919965
|
|
# Hopefully remove before F34 is released.
|
|
CFLAGS: -gdwarf-4
|
|
|
|
x64-fedora-rawhide-clang:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-fedora-rawhide-container
|
|
variables:
|
|
NAME: fedora-rawhide
|
|
CC: clang
|
|
RPM: skip
|
|
|
|
x64-opensuse-152:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-opensuse-152-container
|
|
variables:
|
|
NAME: opensuse-152
|
|
RPM: skip
|
|
|
|
x64-ubuntu-1804:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-ubuntu-1804-container
|
|
variables:
|
|
NAME: ubuntu-1804
|
|
|
|
x64-ubuntu-2004:
|
|
extends: .native_build_job
|
|
needs:
|
|
- x64-ubuntu-2004-container
|
|
variables:
|
|
NAME: ubuntu-2004
|
|
|
|
x64-freebsd-12-build:
|
|
extends: .cirrus_build_job
|
|
variables:
|
|
NAME: freebsd-12
|
|
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
|
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
|
CIRRUS_VM_IMAGE_NAME: freebsd-12-2
|
|
UPDATE_COMMAND: pkg update
|
|
INSTALL_COMMAND: pkg install -y
|
|
|
|
x64-macos-11-build:
|
|
extends: .cirrus_build_job
|
|
variables:
|
|
NAME: macos-11
|
|
CIRRUS_VM_INSTANCE_TYPE: osx_instance
|
|
CIRRUS_VM_IMAGE_SELECTOR: image
|
|
CIRRUS_VM_IMAGE_NAME: big-sur-base
|
|
UPDATE_COMMAND: brew update
|
|
INSTALL_COMMAND: brew install
|
|
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
|
|
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
|
|
|
|
|
|
# Cross compiled build jobs
|
|
|
|
aarch64-debian-sid:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- aarch64-debian-sid-container
|
|
variables:
|
|
NAME: debian-sid
|
|
CROSS: aarch64
|
|
|
|
armv6l-debian-10:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- armv6l-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CROSS: armv6l
|
|
|
|
armv7l-debian-10:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- armv7l-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CROSS: armv7l
|
|
|
|
i686-debian-sid:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- i686-debian-sid-container
|
|
variables:
|
|
NAME: debian-sid
|
|
CROSS: i686
|
|
|
|
mips-debian-10:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- mips-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CROSS: mips
|
|
|
|
mips64el-debian-sid:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- mips64el-debian-sid-container
|
|
variables:
|
|
NAME: debian-sid
|
|
CROSS: mips64el
|
|
|
|
mipsel-debian-10:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- mipsel-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CROSS: mipsel
|
|
|
|
ppc64le-debian-10:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- ppc64le-debian-10-container
|
|
variables:
|
|
NAME: debian-10
|
|
CROSS: ppc64le
|
|
|
|
s390x-debian-sid:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- s390x-debian-sid-container
|
|
variables:
|
|
NAME: debian-sid
|
|
CROSS: s390x
|
|
|
|
mingw32-fedora-rawhide:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- mingw32-fedora-rawhide-container
|
|
variables:
|
|
NAME: fedora-rawhide
|
|
CROSS: mingw32
|
|
|
|
mingw64-fedora-rawhide:
|
|
extends: .cross_build_job
|
|
needs:
|
|
- mingw64-fedora-rawhide-container
|
|
variables:
|
|
NAME: fedora-rawhide
|
|
CROSS: mingw64
|
|
|
|
|
|
# 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: builds
|
|
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
needs:
|
|
- x64-centos-8-container
|
|
before_script:
|
|
- *script_variables
|
|
script:
|
|
- meson build --prefix=$(pwd)/vroot || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
- ninja -C build install-web
|
|
- mv vroot/share/doc/libvirt/html/ website
|
|
artifacts:
|
|
expose_as: 'Website'
|
|
name: 'website'
|
|
when: on_success
|
|
expire_in: 30 days
|
|
paths:
|
|
- website
|
|
|
|
|
|
codestyle:
|
|
stage: builds
|
|
image: $CI_REGISTRY_IMAGE/ci-opensuse-152:latest
|
|
needs:
|
|
- x64-opensuse-152-container
|
|
before_script:
|
|
- *script_variables
|
|
script:
|
|
- meson build || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
- ninja -C build libvirt-pot-dep
|
|
- meson test -C build --suite syntax-check --no-rebuild || (cat build/meson-logs/testlog.txt && exit 1)
|
|
|
|
|
|
# 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: builds
|
|
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
needs:
|
|
- x64-centos-8-container
|
|
rules:
|
|
- if: "$CI_COMMIT_BRANCH == 'master'"
|
|
before_script:
|
|
- *script_variables
|
|
script:
|
|
- meson build || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
- ninja -C build libvirt-pot-dep
|
|
- ninja -C build libvirt-pot
|
|
- cp po/libvirt.pot libvirt.pot
|
|
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 "libvirt" namespace, since we only need to run
|
|
# this test on developer's personal forks from which
|
|
# merge requests are submitted
|
|
check-dco:
|
|
stage: sanity_checks
|
|
needs: []
|
|
image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
|
|
script:
|
|
- /check-dco
|
|
rules:
|
|
- if: "$CI_PROJECT_NAMESPACE != 'libvirt'"
|
|
variables:
|
|
GIT_DEPTH: 1000
|
|
|
|
|
|
# Coverity job that is run only by schedules
|
|
coverity:
|
|
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
needs:
|
|
- x64-centos-8-container
|
|
stage: builds
|
|
script:
|
|
- curl https://scan.coverity.com/download/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz
|
|
- tar xfz /tmp/cov-analysis-linux64.tgz
|
|
- meson build
|
|
- cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja -C build
|
|
- tar cfz cov-int.tar.gz cov-int
|
|
- curl https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN --form email=$GITLAB_USER_EMAIL --form file=@cov-int.tar.gz --form version="$(git describe --tags)" --form description="$(git describe --tags) / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID"
|
|
rules:
|
|
- if: "$CI_PIPELINE_SOURCE == 'schedule' && $COVERITY_SCAN_PROJECT_NAME && $COVERITY_SCAN_TOKEN"
|