* Document GitLab custom CI/CD variables

* Fix 'when:' condition in gitlab-CI jobs
 * Disable tests in the gitlab-CI that fail due to out-of-memory conditions
 * Allow pushing to "staging" again for maintainers without s390x access
 * Fix migration-test build failure on SPARC
 * Compile without "pie" on Haiku
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmECR+0RHHRodXRoQHJl
 ZGhhdC5jb20ACgkQLtnXdP5wLbVwpg//ToLZTe+Op6ZTUkFwVjBEqksEcXJV1Dgb
 XFdA9rQ8c8CxLBFiWF8gnGgHZcnoqPEh7t29xLbSEivp25Al1QuaoM8J38igz0Tu
 4DX6LGl4zTbRVMIiEC8+l87pYC9n3RsojFV47qc9dnL4oMYEPTDw50egbSXnls1u
 bTbLyUETcRn/6QTMgZcK5PWOxAAci+PyHuYXXt/TKVGUtc78ZqOd400OcgmlrKcJ
 IL6H9o66mjtLBsmaVcdl22RGipfvdkBBPUWNGS4aBfBvQFSTz+ROCG50O0hcurYt
 D1rZuLF4flX0QaSzTCbXch5fulDGRagPiV8cQyn28QA9wpjaI8mHs5K43VG+qvp3
 4zqbvZIzEGbraHIxPXmv7qV8kDvPxIhjVkv2/aZAiap/pEOT14lG3Zswi2F1vs9I
 bY03UXa+k09uUM6W0h9TiBuwaoROrsGWgj3cfIvzlIqCDvOv/GWhcjvyU8kjf5sd
 UfV8qu/YnNWARPH0KWQK0T5bvsNa/Sjkza7nCbk47GbagPvg1oOPPy+sbgdOWOiJ
 h2NeBfgHC35wa6p0H1cUbMBtx714WElV+xp1uKh/ehXZY8Vhv0y0jhfJIMt5c2v9
 WgJjdwLDKaHqfHiLNBGMujLywL+5LDBvc0+6AnAf3pN7Js6/PzUJShc5aTkJpMw1
 NOe+ds8HpLk=
 =EHu9
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-07-29' into staging

* Document GitLab custom CI/CD variables
* Fix 'when:' condition in gitlab-CI jobs
* Disable tests in the gitlab-CI that fail due to out-of-memory conditions
* Allow pushing to "staging" again for maintainers without s390x access
* Fix migration-test build failure on SPARC
* Compile without "pie" on Haiku

# gpg: Signature made Thu 29 Jul 2021 07:17:17 BST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* remotes/thuth-gitlab/tags/pull-request-2021-07-29:
  configure script fix for Haiku
  tests: Fix migration-test build failure for sparc
  gitlab-ci.d/custom-runners: Improve rules for the staging branch
  gitlab-ci.d/buildtest: Mark the aarch64 and ppc64-s390x CFI jobs as manual
  gitlab-ci.d/buildtest: Disable iotests 197 and 215
  gitlab-ci: Fix 'when:' condition in OpenSBI jobs
  gitlab-ci: Fix 'when:' condition in EDK2 jobs
  gitlab-ci: Fix 'when:' condition in acceptance_test_job_template
  docs: Document GitLab custom CI/CD variables

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2021-07-29 13:17:20 +01:00
commit 3521ade351
9 changed files with 99 additions and 44 deletions

View file

@ -73,9 +73,9 @@
# in its namespace setting or via git-push option, see documentation
# in /.gitlab-ci.yml of this repository).
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: always
when: on_success
- if: '$QEMU_CI_AVOCADO_TESTING'
when: always
when: on_success
# Otherwise, set to manual (the jobs are created but not run).
- when: manual
allow_failure: true

View file

@ -305,10 +305,10 @@ build-tcg-disabled:
- cd tests/qemu-iotests/
- ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
170 171 183 184 192 194 208 221 222 226 227 236 253 277
- ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
208 209 216 218 222 227 234 246 247 248 250 254 255 257 258
260 261 262 263 264 270 272 273 277 279
build-user:
@ -416,6 +416,12 @@ build-cfi-aarch64:
expire_in: 2 days
paths:
- build
rules:
# FIXME: This job is often failing, likely due to out-of-memory problems in
# the constrained containers of the shared runners. Thus this is marked as
# manual until the situation has been solved.
- when: manual
allow_failure: true
check-cfi-aarch64:
extends: .native_test_job_template
@ -452,6 +458,12 @@ build-cfi-ppc64-s390x:
expire_in: 2 days
paths:
- build
rules:
# FIXME: This job is often failing, likely due to out-of-memory problems in
# the constrained containers of the shared runners. Thus this is marked as
# manual until the situation has been solved.
- when: manual
allow_failure: true
check-cfi-ppc64-s390x:
extends: .native_test_job_template

View file

@ -24,7 +24,8 @@ ubuntu-18.04-s390x-all-linux-static:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
# --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
# --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
@ -43,7 +44,8 @@ ubuntu-18.04-s390x-all:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -59,7 +61,8 @@ ubuntu-18.04-s390x-alldbg:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -76,7 +79,9 @@ ubuntu-18.04-s390x-clang:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
when: manual
- if: "$S390X_RUNNER_AVAILABLE"
when: manual
script:
- mkdir build
@ -93,7 +98,8 @@ ubuntu-18.04-s390x-tci:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -108,7 +114,9 @@ ubuntu-18.04-s390x-notcg:
- ubuntu_18.04
- s390x
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
when: manual
- if: "$S390X_RUNNER_AVAILABLE"
when: manual
script:
- mkdir build
@ -128,7 +136,8 @@ ubuntu-20.04-aarch64-all-linux-static:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
# --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
# --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
@ -147,7 +156,8 @@ ubuntu-20.04-aarch64-all:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -163,7 +173,8 @@ ubuntu-20.04-aarch64-alldbg:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -180,7 +191,9 @@ ubuntu-20.04-aarch64-clang:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
when: manual
- if: "$S390X_RUNNER_AVAILABLE"
when: manual
script:
- mkdir build
@ -197,7 +210,8 @@ ubuntu-20.04-aarch64-tci:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- if: "$S390X_RUNNER_AVAILABLE"
script:
- mkdir build
- cd build
@ -212,7 +226,9 @@ ubuntu-20.04-aarch64-notcg:
- ubuntu_20.04
- aarch64
rules:
- if: '$CI_COMMIT_BRANCH =~ /^staging/'
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
when: manual
- if: "$S390X_RUNNER_AVAILABLE"
when: manual
script:
- mkdir build

View file

@ -8,11 +8,11 @@
- .gitlab-ci.d/edk2/Dockerfile
# or roms/edk2/ is modified (submodule updated)
- roms/edk2/*
when: always
when: on_success
- if: '$CI_COMMIT_REF_NAME =~ /^edk2/' # or the branch/tag starts with 'edk2'
when: always
when: on_success
- if: '$CI_COMMIT_MESSAGE =~ /edk2/i' # or last commit description contains 'EDK2'
when: always
when: on_success
docker-edk2:
extends: .edk2_job_rules

View file

@ -6,14 +6,14 @@
- .gitlab-ci.d/opensbi.yml
# or the Dockerfile is modified
- .gitlab-ci.d/opensbi/Dockerfile
when: always
when: on_success
- changes: # or roms/opensbi/ is modified (submodule updated)
- roms/opensbi/*
when: always
when: on_success
- if: '$CI_COMMIT_REF_NAME =~ /^opensbi/' # or the branch/tag starts with 'opensbi'
when: always
when: on_success
- if: '$CI_COMMIT_MESSAGE =~ /opensbi/i' # or last commit description contains 'OpenSBI'
when: always
when: on_success
docker-opensbi:
extends: .opensbi_job_rules

View file

@ -16,24 +16,9 @@
# QEMU CI jobs are based on templates. Some templates provide
# user-configurable options, modifiable via configuration variables.
#
# These variables can be set globally in the user's CI namespace
# setting:
# https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui
# or set manually each time a branch/tag is pushed, as a git-push
# command line argument:
# https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
# See https://qemu-project.gitlab.io/qemu/devel/ci.html#custom-ci-cd-variables
# for more information.
#
# Example setting the QEMU_CI_EXAMPLE_VAR variable:
#
# git push -o ci.variable="QEMU_CI_EXAMPLE_VAR=value" myrepo mybranch
#
# ----------------------------------------------------------------------
#
# List of environment variables that can be use to modify the set
# of jobs selected:
#
# - QEMU_CI_AVOCADO_TESTING
# If set, tests using the Avocado framework will be run
include:
- local: '/.gitlab-ci.d/qemu-project.yml'

3
configure vendored
View file

@ -770,7 +770,8 @@ SunOS)
;;
Haiku)
haiku="yes"
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE $QEMU_CFLAGS"
pie="no"
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
;;
Linux)
audio_drv_list="try-pa oss"

View file

@ -8,6 +8,46 @@ found at::
https://wiki.qemu.org/Testing/CI
Custom CI/CD variables
======================
QEMU CI pipelines can be tuned by setting some CI environment variables.
Set variable globally in the user's CI namespace
------------------------------------------------
Variables can be set globally in the user's CI namespace setting.
For further information about how to set these variables, please refer to::
https://docs.gitlab.com/ee/ci/variables/#add-a-cicd-variable-to-a-project
Set variable manually when pushing a branch or tag to the user's repository
---------------------------------------------------------------------------
Variables can be set manually when pushing a branch or tag, using
git-push command line arguments.
Example setting the QEMU_CI_EXAMPLE_VAR variable:
.. code::
git push -o ci.variable="QEMU_CI_EXAMPLE_VAR=value" myrepo mybranch
For further information about how to set these variables, please refer to::
https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
Here is a list of the most used variables:
QEMU_CI_AVOCADO_TESTING
~~~~~~~~~~~~~~~~~~~~~~~
By default, tests using the Avocado framework are not run automatically in
the pipelines (because multiple artifacts have to be downloaded, and if
these artifacts are not already cached, downloading them make the jobs
reach the timeout limit). Set this variable to have the tests using the
Avocado framework run automatically.
Jobs on Custom Runners
======================

View file

@ -27,7 +27,8 @@
#include "migration-helpers.h"
#include "tests/migration/migration-test.h"
#if defined(__linux__)
/* For dirty ring test; so far only x86_64 is supported */
#if defined(__linux__) && defined(HOST_X86_64)
#include "linux/kvm.h"
#endif
@ -1395,7 +1396,7 @@ static void test_multifd_tcp_cancel(void)
static bool kvm_dirty_ring_supported(void)
{
#if defined(__linux__)
#if defined(__linux__) && defined(HOST_X86_64)
int ret, kvm_fd = open("/dev/kvm", O_RDONLY);
if (kvm_fd < 0) {