Commit 8bec7b9874 for qemu.org
commit 8bec7b9874235e60f14172618121c60fdbd39302
Author: Alex Bennée <alex.bennee@linaro.org>
Date: Mon Nov 17 11:55:23 2025 +0000
gitlab: add a weekly container building job
This will hopefully catch containers that break because of upstream
changes as well as keep the container cache fresh.
As we have all the container jobs as dependants we tweaks the
container template to allow scheduled runs. Because we added a new
rules stanza we also need to make sure we catch the normal runs as
well.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20251117115523.3993105-19-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/.gitlab-ci.d/container-template.yml b/.gitlab-ci.d/container-template.yml
index 4eec72f383..82c1b69e8d 100644
--- a/.gitlab-ci.d/container-template.yml
+++ b/.gitlab-ci.d/container-template.yml
@@ -19,3 +19,8 @@
- docker push "$TAG"
after_script:
- docker logout
+ rules:
+ # because we want to enable this for scheduled runs we also have to replicate the normal rules
+ - if: '$CI_PIPELINE_SOURCE == "schedule"'
+ - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: '$QEMU_CI && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index db9b4d5e57..f7d3e7205d 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -33,3 +33,42 @@ amd64-fedora-rust-nightly-container:
variables:
NAME: fedora-rust-nightly
allow_failure: true
+
+# this scheduled job will trigger all the containers to build
+weekly-container-builds:
+ extends: .container_job_template
+ allow_failure: true
+ needs:
+ # core
+ - amd64-centos9-container
+ - amd64-fedora-container
+ # cross
+ - amd64-debian-cross-container
+ - amd64-debian-user-cross-container
+ - amd64-debian-legacy-cross-container
+ - arm64-debian-cross-container
+ - armhf-debian-cross-container
+ - hexagon-cross-container
+ - loongarch-debian-cross-container
+ - i686-debian-cross-container
+ - mips64el-debian-cross-container
+ - ppc64el-debian-cross-container
+ - riscv64-debian-cross-container
+ - s390x-debian-cross-container
+ - tricore-debian-cross-container
+ - xtensa-debian-cross-container
+ - win64-fedora-cross-container
+ - wasm-emsdk-cross-container
+ # containers
+ - amd64-alpine-container
+ - amd64-debian-container
+ - amd64-ubuntu2204-container
+ - amd64-opensuse-leap-container
+ - python-container
+ - amd64-fedora-rust-nightly-container
+ script:
+ - apk -U add make bash skopeo
+ - make docker-verify V=1 DOCKER_DEFAULT_REGISTRY=$CI_REGISTRY_IMAGE
+ rules:
+ # this only ever runes as a scheduled build
+ - if: '$CI_PIPELINE_SOURCE == "schedule"'
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 3959d8a028..38467cca61 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -49,6 +49,15 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker
-t qemu/$* - < $< $(if $V,,> /dev/null),\
"BUILD", $*)
+# General rule for inspecting registry images.
+docker-verify-%: $(DOCKER_FILES_DIR)/%.docker
+ $(call quiet-command, \
+ skopeo inspect \
+ --format '{{.Created}}' \
+ docker://$(DOCKER_REGISTRY)/qemu/$* \
+ $(if $V,,> /dev/null),\
+ "VERIFY", $*)
+
# Special rule for debootstraped binfmt linux-user images
docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
$(if $(EXECUTABLE),,\
@@ -236,6 +245,8 @@ docker-run: docker-qemu-src
docker-image: ${DOCKER_IMAGES:%=docker-image-%}
+docker-verify: ${DOCKER_IMAGES:%=docker-verify-%}
+
docker-clean:
$(call quiet-command, $(DOCKER_SCRIPT) clean)