On the primary QEMU repository we want the CI jobs to run on the staging branch as a gating CI test. Cirrus CI has very limited job concurrency, so if there are too many jobs triggered they'll queue up and hit the GitLab CI job timeout before they complete on Cirrus. If we let Cirrus jobs run again on the master branch immediately after merging from staging, that just increases the chances jobs will get queued and subsequently timeout. The same applies for merges to the stable branches. User forks meanwhile should be allowed to run Cirrus CI jobs freely. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Willian Rampazzo <willianr@redhat.com> Message-Id: <20211116112757.1909176-1-berrange@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
91 lines
3.6 KiB
YAML
91 lines
3.6 KiB
YAML
# 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.
|
|
#
|
|
# 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: build
|
|
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
|
needs: []
|
|
allow_failure: true
|
|
script:
|
|
- source .gitlab-ci.d/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|[@]CIRRUS_VM_CPUS@|$CIRRUS_VM_CPUS|g"
|
|
-e "s|[@]CIRRUS_VM_RAM@|$CIRRUS_VM_RAM|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"
|
|
-e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g"
|
|
-e "s|[@]TEST_TARGETS@|$TEST_TARGETS|g"
|
|
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
|
- cat .gitlab-ci.d/cirrus/$NAME.yml
|
|
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
|
rules:
|
|
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
|
|
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
|
|
when: never
|
|
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
|
|
|
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
|
|
CIRRUS_VM_CPUS: 8
|
|
CIRRUS_VM_RAM: 8G
|
|
UPDATE_COMMAND: pkg update
|
|
INSTALL_COMMAND: pkg install -y
|
|
# TODO: Enable gnutls again once FreeBSD's libtasn1 got fixed
|
|
# See: https://gitlab.com/gnutls/libtasn1/-/merge_requests/71
|
|
CONFIGURE_ARGS: --disable-gnutls
|
|
TEST_TARGETS: check
|
|
|
|
x64-freebsd-13-build:
|
|
extends: .cirrus_build_job
|
|
variables:
|
|
NAME: freebsd-13
|
|
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
|
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
|
CIRRUS_VM_IMAGE_NAME: freebsd-13-0
|
|
CIRRUS_VM_CPUS: 8
|
|
CIRRUS_VM_RAM: 8G
|
|
UPDATE_COMMAND: pkg update
|
|
INSTALL_COMMAND: pkg install -y
|
|
TEST_TARGETS: check
|
|
|
|
x64-macos-11-base-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
|
|
CIRRUS_VM_CPUS: 12
|
|
CIRRUS_VM_RAM: 24G
|
|
UPDATE_COMMAND: brew update
|
|
INSTALL_COMMAND: brew install
|
|
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin
|
|
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
|
|
TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat check-qtest-x86_64
|