Merge tag 'pbouvier/pr/ci-20260625' of https://gitlab.com/p-b-o/qemu into staging

Changes:
- [PATCH v2 0/6] gitlab: expose more info about CI runner environment (=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>)
  Link: https://lore.kernel.org/qemu-devel/20260624124657.2725376-1-berrange@redhat.com

 # -----BEGIN PGP SIGNATURE-----
 #
 # iQGzBAABCgAdFiEEN8FWlNi6l2Sxlz/btEQ30ZwoYt8FAmo9qdAACgkQtEQ30Zwo
 # Yt8wMwwAhjB7xy4Eu3gt+leYEq9Yfq44fFGAnBQlN1kvEJhYkxJIA0KSoTZHGSQ/
 # Kn97Quhc4kUI4+VvW++pDLevRZ1L80bcKPIM1PtOv5+VKvzCpEjzso6xYodpXTB5
 # XgoXgnfTrLagccVeQLObex7PYPVtiQRV0xGXpQSgDqzbxgczgeEqR6YuED7eZVaJ
 # ya2JdrIGnpKRhaal+RoCfSnqkRVYvIqs1/CVW2a3VZAq9+kLsx22NceDmX4v22mU
 # O/rV4NlfjQ/2FuJvr/Zdnq8RFMHZwFW/NitKWH8esdgXwShnScNq/w4cHS/8CiYC
 # 0jq1PxMNuI6q9yjQrXxDMdzJaPjyFnjCFCEYCyZsl9Iokb1GnWVT8xDB07HHRXwL
 # nH6YYepSEhlEhY2RFkR4lT9q4p2XoTXlASgxpn6MLu+4V+vuh2A47KNNuClmiLnL
 # JQfeF4970RHuJOzxxlzcIpjxHJSxi4SjbGKIuQZ6Hu1eIVx4Tly2Xep4mxa5qCZN
 # KIwoRaKZ
 # =jvzH
 # -----END PGP SIGNATURE-----
 # gpg: Signature made Thu 25 Jun 2026 18:21:04 EDT
 # gpg:                using RSA key 37C15694D8BA9764B1973FDBB44437D19C2862DF
 # gpg: Good signature from "Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>" [unknown]
 # gpg: WARNING: This key is not certified with a trusted signature!
 # gpg:          There is no indication that the signature belongs to the owner.
 # Primary key fingerprint: 37C1 5694 D8BA 9764 B197  3FDB B444 37D1 9C28 62DF

* tag 'pbouvier/pr/ci-20260625' of https://gitlab.com/p-b-o/qemu:
  gitlab: greatly expand captured info about CI runner environment
  gitlab: pull before_script logic into .base_meson_job_template
  gitlab: pull ccache setup into .base_meson_ccache_job_template
  gitlab: use .base_meson_job_template from crossbuild jobs
  gitlab: move .meson_job_template into base.yaml
  gitlab: remove unused .cross_test_artifacts template

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

Conflicts:
- .gitlab-ci.d/buildtest-template.yml
  Context conflict with commit 559d834371 ("gitlab: ensure "check-XXX'
  jobs capture functional test logs") moving the artifacts section.
This commit is contained in:
Stefan Hajnoczi
2026-06-26 07:58:03 -04:00
3 changed files with 71 additions and 97 deletions

View File

@@ -134,3 +134,51 @@ variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
- when: on_success - when: on_success
# Any job running meson should capture meson logs
# by default. Some jobs might override the artifacts
# to capture further files
.base_meson_job_template:
extends: .base_job_template
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
when: always
expire_in: 7 days
paths:
- build/meson-logs
- ci-runner-env
reports:
junit: build/meson-logs/*.junit.xml
before_script:
- source scripts/ci/gitlab-ci-section
- section_start setup "Pre-script setup"
- JOBS=$(expr $(nproc) + 1)
# Prevent logs (if any) from prior build job artifacts
# from being duplicated in the new job artifacts
- rm -f build/meson-logs/*
- mkdir -p ci-runner-env
- test -f /packages.txt && cp /packages.txt ci-runner-env/packages.txt
- cp /proc/mounts ci-runner-env/mounts.txt
- cp /proc/cpuinfo ci-runner-env/cpuinfo.txt
- cp /proc/meminfo ci-runner-env/meminfo.txt
- ls -l /dev > ci-runner-env/devices.txt
- uname -a > ci-runner-env/kernel.txt
- id -a > ci-runner-env/user.txt
- printenv | sort > ci-runner-env/environ.txt
- section_end setup
.base_meson_ccache_job_template:
extends: .base_meson_job_template
cache:
paths:
- ccache
key: "$CI_JOB_NAME"
when: always
script:
- export CCACHE_BASEDIR="$(pwd)"
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
- ccache --zero-stats
after_script:
- ccache --show-stats

View File

@@ -1,42 +1,13 @@
# Any job running meson should capture meson logs
# by default. Some jobs might override the artifacts
# to capture further files
.meson_job_template:
extends: .base_job_template
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
when: always
expire_in: 7 days
paths:
- build/meson-logs
reports:
junit: build/meson-logs/*.junit.xml
.native_build_job_template: .native_build_job_template:
extends: .meson_job_template extends: .base_meson_ccache_job_template
stage: build stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
cache:
paths:
- ccache
key: "$CI_JOB_NAME"
when: always
before_script:
- source scripts/ci/gitlab-ci-section
- section_start setup "Pre-script setup"
- JOBS=$(expr $(nproc) + 1)
- cat /packages.txt
- section_end setup
script: script:
- export CCACHE_BASEDIR="$(pwd)" - !reference [.base_meson_ccache_job_template, script]
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
- du -sh .git - du -sh .git
- mkdir build - mkdir build
- cd build - cd build
- ccache --zero-stats
- section_start configure "Running configure" - section_start configure "Running configure"
- ../configure --enable-werror --disable-docs --enable-fdt=system - ../configure --enable-werror --disable-docs --enable-fdt=system
--disable-debug-info --disable-debug-info
@@ -57,7 +28,6 @@
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ; $MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
fi fi
- section_end test - section_end test
- ccache --show-stats
# We jump some hoops in common_test_job_template to avoid # We jump some hoops in common_test_job_template to avoid
# rebuilding all the object files we skip in the artifacts # rebuilding all the object files we skip in the artifacts
@@ -68,6 +38,7 @@
paths: paths:
- build - build
- .git-submodule-status - .git-submodule-status
- ci-runner-env
exclude: exclude:
- build/**/*.p - build/**/*.p
- build/**/*.a.p - build/**/*.a.p
@@ -75,7 +46,7 @@
- build/**/*.c.o.d - build/**/*.c.o.d
.common_test_job_template: .common_test_job_template:
extends: .meson_job_template extends: .base_meson_job_template
stage: test stage: test
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
artifacts: artifacts:
@@ -107,11 +78,6 @@
.native_test_job_template: .native_test_job_template:
extends: .common_test_job_template extends: .common_test_job_template
before_script:
# Prevent logs from the build job that run earlier
# from being duplicated in the test job artifacts
- rm -f build/meson-logs/*
.functional_test_job_template: .functional_test_job_template:
extends: .common_test_job_template extends: .common_test_job_template
@@ -126,21 +92,28 @@
# Prevent logs from the build job that run earlier # Prevent logs from the build job that run earlier
# from being duplicated in the test job artifacts # from being duplicated in the test job artifacts
- rm -f build/meson-logs/* - rm -f build/meson-logs/*
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
when: always
expire_in: 7 days
paths:
- build/meson-logs
- build/tests/functional/*/*/*.log
- ci-runner-env
reports:
junit: build/meson-logs/*.junit.xml
after_script: after_script:
- cd build - cd build
- du -chs ${CI_PROJECT_DIR}/*-cache - du -chs ${CI_PROJECT_DIR}/*-cache
variables: variables:
QEMU_JOB_FUNCTIONAL: 1 QEMU_JOB_FUNCTIONAL: 1
QEMU_TEST_ALLOW_UNTRUSTED_CODE: 1
QEMU_TEST_CACHE_DIR: ${CI_PROJECT_DIR}/functional-cache
.wasm_build_job_template: .wasm_build_job_template:
extends: .meson_job_template extends: .base_meson_job_template
stage: build stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
before_script:
- source scripts/ci/gitlab-ci-section
- section_start setup "Pre-script setup"
- JOBS=$(expr $(nproc) + 1)
- section_end setup
script: script:
- du -sh .git - du -sh .git
- mkdir build - mkdir build

View File

@@ -1,27 +1,12 @@
.cross_system_build_job: .cross_system_build_job:
extends: .base_job_template extends: .base_meson_ccache_job_template
stage: build stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
cache:
paths:
- ccache
key: "$CI_JOB_NAME"
when: always
timeout: 80m timeout: 80m
before_script:
- source scripts/ci/gitlab-ci-section
- section_start setup "Pre-script setup"
- JOBS=$(expr $(nproc) + 1)
- cat /packages.txt
- section_end setup
script: script:
- export CCACHE_BASEDIR="$(pwd)" - !reference [.base_meson_ccache_job_template, script]
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
- mkdir build - mkdir build
- cd build - cd build
- ccache --zero-stats
- section_start configure "Running configure" - section_start configure "Running configure"
- ../configure --enable-werror --disable-docs --enable-fdt=system - ../configure --enable-werror --disable-docs --enable-fdt=system
--disable-user $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS --disable-user $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS
@@ -46,7 +31,6 @@
mv -v qemu-setup*.exe qemu-setup-${version}.exe; mv -v qemu-setup*.exe qemu-setup-${version}.exe;
fi fi
- section_end installer - section_end installer
- ccache --show-stats
# Job to cross-build specific accelerators. # Job to cross-build specific accelerators.
# #
@@ -54,22 +38,12 @@
# KVM), and set extra options (such disabling other accelerators) via the # KVM), and set extra options (such disabling other accelerators) via the
# $EXTRA_CONFIGURE_OPTS variable. # $EXTRA_CONFIGURE_OPTS variable.
.cross_accel_build_job: .cross_accel_build_job:
extends: .base_job_template extends: .base_meson_ccache_job_template
stage: build stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
timeout: 60m timeout: 60m
cache:
paths:
- ccache/
key: "$CI_JOB_NAME"
before_script:
- source scripts/ci/gitlab-ci-section
- JOBS=$(expr $(nproc) + 1)
script: script:
- export CCACHE_BASEDIR="$(pwd)" - !reference [.base_meson_ccache_job_template, script]
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
- mkdir build - mkdir build
- cd build - cd build
- section_start configure "Running configure" - section_start configure "Running configure"
@@ -87,20 +61,11 @@
- section_end test - section_end test
.cross_user_build_job: .cross_user_build_job:
extends: .base_job_template extends: .base_meson_ccache_job_template
stage: build stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
cache:
paths:
- ccache/
key: "$CI_JOB_NAME"
before_script:
- source scripts/ci/gitlab-ci-section
- JOBS=$(expr $(nproc) + 1)
script: script:
- export CCACHE_BASEDIR="$(pwd)" - !reference [.base_meson_ccache_job_template, script]
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- mkdir build - mkdir build
- cd build - cd build
- section_start configure "Running configure" - section_start configure "Running configure"
@@ -119,15 +84,3 @@
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ; $MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
fi fi
- section_end test - section_end test
# We can still run some tests on some of our cross build jobs. They can add this
# template to their extends to save the build logs and test results
.cross_test_artifacts:
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
when: always
expire_in: 7 days
paths:
- build/meson-logs
reports:
junit: build/meson-logs/*.junit.xml