There's quite a lot happening in the .integration_tests template
already even without adding upstream QEMU build into the mix.
Let's break the template into more pieces which can then reference
in the .integration_tests template when putting all the pieces back
together using YAML anchors.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
Reviewed-by: Michal Privoznik <mprivozn(a)redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
ci/integration-template.yml | 76 +++++++++++++++++++++++--------------
1 file changed, 47 insertions(+), 29 deletions(-)
diff --git a/ci/integration-template.yml b/ci/integration-template.yml
index c4201df6db..195e9cfa5f 100644
--- a/ci/integration-template.yml
+++ b/ci/integration-template.yml
@@ -1,44 +1,62 @@
+
+
+.install-deps: &install-deps
+ - sudo dnf install -y libvirt-rpms/* libvirt-perl-rpms/*
+ - sudo pip3 install --prefix=/usr avocado-framework
+
+
+.enable-core-dumps: &enable-core-dumps
+ - sudo sh -c "echo DefaultLimitCORE=infinity >>
/etc/systemd/system.conf" # Explicitly allow storing cores globally
+ - sudo systemctl daemon-reexec # need to reexec systemd after changing config
+
+
+.enable-libvirt-debugging: &enable-libvirt-debugging
+ - source /etc/os-release # in order to query the vendor-provided variables
+ - if test "$ID" = "centos" && test "$VERSION_ID"
-lt 9 ||
+ test "$ID" = "fedora" && test "$VERSION_ID"
-lt 35;
+ then
+ DAEMONS="libvirtd virtlogd virtlockd";
+ else
+ DAEMONS="virtproxyd virtqemud virtinterfaced virtsecretd virtstoraged
virtnwfilterd virtnodedevd virtlogd virtlockd";
+ fi
+ - for daemon in $DAEMONS;
+ do
+ LOG_OUTPUTS="1:file:/var/log/libvirt/${daemon}.log";
+ LOG_FILTERS="3:remote 4:event 3:util.json 3:util.object 3:util.dbus
3:util.netlink 3:node_device 3:rpc 3:access 1:*";
+ sudo augtool set /files/etc/libvirt/${daemon}.conf/log_filters
"$LOG_FILTERS" &>/dev/null;
+ sudo augtool set /files/etc/libvirt/${daemon}.conf/log_outputs
"$LOG_OUTPUTS" &>/dev/null;
+ sudo systemctl --quiet stop ${daemon}.service;
+ sudo systemctl restart ${daemon}.socket;
+ done
+
+
+.collect-logs: &collect-logs
+ - mkdir logs
+ - test -e "$SCRATCH_DIR"/avocado && sudo mv
"$SCRATCH_DIR"/avocado/latest/test-results logs/avocado;
+ - sudo coredumpctl info --no-pager > logs/coredumpctl.txt
+ - sudo mv /var/log/libvirt logs/libvirt
+ - sudo chown -R $(whoami):$(whoami) logs
+ # rename all Avocado stderr/stdout logs to *.log so that GitLab's web UI
doesn't mangle the MIME type
+ - find logs/avocado/ -type f ! -name "*.log" -exec
+ sh -c 'DIR=$(dirname {}); NAME=$(basename {}); mv $DIR/$NAME{,.log}' \;
+
+
.integration_tests:
stage: integration_tests
before_script:
- mkdir "$SCRATCH_DIR"
- - sudo sh -c "echo DefaultLimitCORE=infinity >>
/etc/systemd/system.conf" # Explicitly allow storing cores globally
- - sudo systemctl daemon-reexec # need to reexec systemd after changing config
- - sudo dnf install -y libvirt-rpms/* libvirt-perl-rpms/*
- - sudo pip3 install --prefix=/usr avocado-framework
- - source /etc/os-release # in order to query the vendor-provided variables
- - if test "$ID" = "centos" && test
"$VERSION_ID" -lt 9 ||
- test "$ID" = "fedora" && test
"$VERSION_ID" -lt 35;
- then
- DAEMONS="libvirtd virtlogd virtlockd";
- else
- DAEMONS="virtproxyd virtqemud virtinterfaced virtsecretd virtstoraged
virtnwfilterd virtnodedevd virtlogd virtlockd";
- fi
- - for daemon in $DAEMONS;
- do
- LOG_OUTPUTS="1:file:/var/log/libvirt/${daemon}.log";
- LOG_FILTERS="3:remote 4:event 3:util.json 3:util.object 3:util.dbus
3:util.netlink 3:node_device 3:rpc 3:access 1:*";
- sudo augtool set /files/etc/libvirt/${daemon}.conf/log_filters
"$LOG_FILTERS" &>/dev/null;
- sudo augtool set /files/etc/libvirt/${daemon}.conf/log_outputs
"$LOG_OUTPUTS" &>/dev/null;
- sudo systemctl --quiet stop ${daemon}.service;
- sudo systemctl restart ${daemon}.socket;
- done
+ - *install-deps
+ - *enable-core-dumps
+ - *enable-libvirt-debugging
- sudo virsh net-start default &>/dev/null || true;
script:
- - mkdir logs
- cd "$SCRATCH_DIR"
- git clone --depth 1
https://gitlab.com/libvirt/libvirt-tck.git
- cd libvirt-tck
- sudo avocado --config avocado.config run --job-results-dir
"$SCRATCH_DIR"/avocado
after_script:
- test "$CI_JOB_STATUS" = "success" && exit 0;
- - test -e "$SCRATCH_DIR"/avocado && sudo mv
"$SCRATCH_DIR"/avocado/latest/test-results logs/avocado;
- - sudo coredumpctl info --no-pager > logs/coredumpctl.txt
- - sudo mv /var/log/libvirt logs/libvirt
- - sudo chown -R $(whoami):$(whoami) logs
- # rename all Avocado stderr/stdout logs to *.log so that GitLab's web UI
doesn't mangle the MIME type
- - find logs/avocado/ -type f ! -name "*.log" -exec
- sh -c 'DIR=$(dirname {}); NAME=$(basename {}); mv $DIR/$NAME{,.log}' \;
+ - *collect-logs
variables:
SCRATCH_DIR: "/tmp/scratch"
artifacts:
--
2.34.3