From 82dbca46b605685ab354bf8cea7f2a2615132b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 27 Nov 2023 16:50:08 +0000 Subject: [PATCH] ci: refresh with latest lcitool manifest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the distros: * Add Alpine 3.18, 3.19, Edge, CentOS Stream 9, Fedora 39, 40, Ubuntu 24.04, AlmaLinux 8, 9, Debian 11, 12 * Remove CentOS Stream 8, Fedora 37, 38, Ubuntu 20.04, Debian 10, Fedora 35, 36 * Rename OpenSUSE 15.3 to 15 Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 59 +--- ci/buildenv/almalinux-8.sh | 47 +++ ci/buildenv/almalinux-9.sh | 110 +++++++ ci/buildenv/alpine-318.sh | 43 +++ ci/buildenv/alpine-319.sh | 43 +++ ci/buildenv/alpine-edge.sh | 43 +++ ...{centos-stream-8.sh => centos-stream-9.sh} | 17 +- ci/buildenv/{debian-10.sh => debian-11.sh} | 8 +- ci/buildenv/{ubuntu-2004.sh => debian-12.sh} | 9 +- ci/buildenv/debian-sid.sh | 1 + ci/buildenv/{fedora-35.sh => fedora-39.sh} | 1 + ci/buildenv/{fedora-36.sh => fedora-40.sh} | 1 + ci/buildenv/fedora-rawhide-cross-mingw32.sh | 3 +- ci/buildenv/fedora-rawhide-cross-mingw64.sh | 3 +- ci/buildenv/fedora-rawhide.sh | 3 +- ...ensuse-leap-153.sh => opensuse-leap-15.sh} | 8 +- ci/buildenv/opensuse-tumbleweed.sh | 3 +- ci/buildenv/ubuntu-2204.sh | 1 + ci/buildenv/ubuntu-2404.sh | 48 +++ ci/containers/almalinux-8.Dockerfile | 49 +++ ci/containers/almalinux-9.Dockerfile | 113 +++++++ ci/containers/alpine-318.Dockerfile | 43 +++ ci/containers/alpine-319.Dockerfile | 43 +++ ci/containers/alpine-edge.Dockerfile | 43 +++ ....Dockerfile => centos-stream-9.Dockerfile} | 20 +- ...ian-10.Dockerfile => debian-11.Dockerfile} | 11 +- ...u-2004.Dockerfile => debian-12.Dockerfile} | 12 +- ci/containers/debian-sid.Dockerfile | 1 + ...ora-35.Dockerfile => fedora-39.Dockerfile} | 7 +- ...ora-36.Dockerfile => fedora-40.Dockerfile} | 7 +- .../fedora-rawhide-cross-mingw32.Dockerfile | 7 +- .../fedora-rawhide-cross-mingw64.Dockerfile | 7 +- ci/containers/fedora-rawhide.Dockerfile | 7 +- ...Dockerfile => opensuse-leap-15.Dockerfile} | 11 +- ci/containers/opensuse-tumbleweed.Dockerfile | 3 +- ci/containers/ubuntu-2204.Dockerfile | 1 + ci/containers/ubuntu-2404.Dockerfile | 51 +++ ci/gitlab.yml | 8 + ci/gitlab/build-templates.yml | 300 ++++++++++-------- ci/gitlab/builds.yml | 261 +++++++-------- ci/gitlab/container-templates.yml | 3 +- ci/gitlab/containers.yml | 76 ++++- ci/gitlab/sanity-checks.yml | 7 +- ci/manifest.yml | 45 ++- 44 files changed, 1163 insertions(+), 424 deletions(-) create mode 100644 ci/buildenv/almalinux-8.sh create mode 100644 ci/buildenv/almalinux-9.sh create mode 100644 ci/buildenv/alpine-318.sh create mode 100644 ci/buildenv/alpine-319.sh create mode 100644 ci/buildenv/alpine-edge.sh rename ci/buildenv/{centos-stream-8.sh => centos-stream-9.sh} (90%) rename ci/buildenv/{debian-10.sh => debian-11.sh} (90%) rename ci/buildenv/{ubuntu-2004.sh => debian-12.sh} (90%) rename ci/buildenv/{fedora-35.sh => fedora-39.sh} (97%) rename ci/buildenv/{fedora-36.sh => fedora-40.sh} (97%) rename ci/buildenv/{opensuse-leap-153.sh => opensuse-leap-15.sh} (87%) create mode 100644 ci/buildenv/ubuntu-2404.sh create mode 100644 ci/containers/almalinux-8.Dockerfile create mode 100644 ci/containers/almalinux-9.Dockerfile create mode 100644 ci/containers/alpine-318.Dockerfile create mode 100644 ci/containers/alpine-319.Dockerfile create mode 100644 ci/containers/alpine-edge.Dockerfile rename ci/containers/{centos-stream-8.Dockerfile => centos-stream-9.Dockerfile} (88%) rename ci/containers/{debian-10.Dockerfile => debian-11.Dockerfile} (88%) rename ci/containers/{ubuntu-2004.Dockerfile => debian-12.Dockerfile} (88%) rename ci/containers/{fedora-35.Dockerfile => fedora-39.Dockerfile} (92%) rename ci/containers/{fedora-36.Dockerfile => fedora-40.Dockerfile} (92%) rename ci/containers/{opensuse-leap-153.Dockerfile => opensuse-leap-15.Dockerfile} (84%) create mode 100644 ci/containers/ubuntu-2404.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5e594a4..7e20463 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,8 @@ stages: export PKG_CONFIG_PATH="$LIBDIR/pkgconfig" .native_build_job: + extends: + - .gitlab_native_build_job script: - *script_variables - meson build @@ -22,17 +24,9 @@ stages: rpmbuild --nodeps -ta build/meson-dist/virt-viewer-*.tar.xz; fi -.native_build_job_prebuilt_env: - extends: - - .native_build_job - - .gitlab_native_build_job_prebuilt_env - -.native_build_job_local_env: - extends: - - .native_build_job - - .gitlab_native_build_job_local_env - .native_git_build_job: + extends: + - .gitlab_native_build_job script: - *script_variables - pushd "$PWD" @@ -59,18 +53,9 @@ stages: rpmbuild --nodeps -ta build/meson-dist/virt-viewer-*.tar.xz; fi -.native_git_build_job_prebuilt_env: - extends: - - .native_git_build_job - - .gitlab_native_build_job_prebuilt_env - -.native_git_build_job_local_env: - extends: - - .native_git_build_job - - .gitlab_native_build_job_local_env - .cross_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + extends: + - .gitlab_cross_build_job cache: paths: - ccache/ @@ -80,39 +65,19 @@ stages: - meson build $MESON_OPTS - $NINJA -C build -.cross_build_job_prebuilt_env: - extends: - - .cross_build_job - - .gitlab_cross_build_job_prebuilt_env - -.cross_build_job_local_env: - extends: - - .cross_build_job - - .gitlab_cross_build_job_local_env - include: '/ci/gitlab.yml' .codestyle_job: + extends: + - .gitlab_native_build_job + needs: + - job: x86_64-centos-stream-8-container + optional: true stage: sanity_checks script: - *script_variables - meson build || (cat build/meson-logs/meson-log.txt && exit 1) - meson test -C build --suite syntax-check --no-rebuild || (cat build/meson-logs/testlog.txt && exit 1) - -codestyle_prebuilt_env: - extends: - - .codestyle_job - - .gitlab_native_build_job_prebuilt_env - needs: - - job: x86_64-centos-stream-8-container - optional: true variables: - NAME: centos-stream-8 - -codestyle_local_env: - extends: - - .codestyle_job - - .gitlab_native_build_job_local_env - variables: - IMAGE: quay.io/centos/centos:stream8 + TARGET_BASE_IMAGE: quay.io/centos/centos:stream8 NAME: centos-stream-8 diff --git a/ci/buildenv/almalinux-8.sh b/ci/buildenv/almalinux-8.sh new file mode 100644 index 0000000..b56f24e --- /dev/null +++ b/ci/buildenv/almalinux-8.sh @@ -0,0 +1,47 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y powertools + dnf install -y centos-release-advanced-virtualization + dnf install -y epel-release + dnf install -y \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gtk-vnc2-devel \ + gtk3-devel \ + icoutils \ + libtool \ + libvirt-devel \ + libvirt-gobject-devel \ + libxml2 \ + libxml2-devel \ + make \ + meson \ + ninja-build \ + pkgconfig \ + rpm-build \ + spice-gtk3-devel \ + vte291-devel + rpm -qa | sort > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" diff --git a/ci/buildenv/almalinux-9.sh b/ci/buildenv/almalinux-9.sh new file mode 100644 index 0000000..1a68779 --- /dev/null +++ b/ci/buildenv/almalinux-9.sh @@ -0,0 +1,110 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y crb + dnf install -y epel-release + dnf install -y \ + audit-libs-devel \ + augeas \ + bash-completion \ + ca-certificates \ + ccache \ + clang \ + cpp \ + cyrus-sasl-devel \ + device-mapper-devel \ + diffutils \ + dwarves \ + ebtables \ + firewalld-filesystem \ + fuse-devel \ + gcc \ + gdk-pixbuf2-devel \ + gettext \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + gobject-introspection-devel \ + grep \ + gtk-doc \ + gtk3-devel \ + icoutils \ + iproute \ + iproute-tc \ + iptables \ + iscsi-initiator-utils \ + kmod \ + libacl-devel \ + libattr-devel \ + libblkid-devel \ + libcap-ng-devel \ + libcurl-devel \ + libgcrypt-devel \ + libiscsi-devel \ + libnbd-devel \ + libnl3-devel \ + libpcap-devel \ + libpciaccess-devel \ + librbd-devel \ + libselinux-devel \ + libssh-devel \ + libssh2-devel \ + libtirpc-devel \ + libtool \ + libwsman-devel \ + libxml2 \ + libxml2-devel \ + libxslt \ + lvm2 \ + make \ + meson \ + nfs-utils \ + ninja-build \ + numactl-devel \ + numad \ + parted-devel \ + perl-base \ + pkgconfig \ + polkit \ + pulseaudio-libs-devel \ + python3 \ + python3-docutils \ + python3-flake8 \ + python3-pip \ + python3-pytest \ + python3-setuptools \ + python3-wheel \ + qemu-img \ + readline-devel \ + rpm-build \ + sanlock-devel \ + sed \ + systemd-devel \ + systemd-rpm-macros \ + systemtap-sdt-devel \ + vala \ + vte291-devel \ + wireshark-devel \ + yajl-devel + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED + rpm -qa | sort > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + /usr/bin/pip3 install black +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" +export PYTHON="/usr/bin/python3" diff --git a/ci/buildenv/alpine-318.sh b/ci/buildenv/alpine-318.sh new file mode 100644 index 0000000..43d0515 --- /dev/null +++ b/ci/buildenv/alpine-318.sh @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + apk update + apk upgrade + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev + apk list --installed | sort > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" diff --git a/ci/buildenv/alpine-319.sh b/ci/buildenv/alpine-319.sh new file mode 100644 index 0000000..43d0515 --- /dev/null +++ b/ci/buildenv/alpine-319.sh @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + apk update + apk upgrade + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev + apk list --installed | sort > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" diff --git a/ci/buildenv/alpine-edge.sh b/ci/buildenv/alpine-edge.sh new file mode 100644 index 0000000..43d0515 --- /dev/null +++ b/ci/buildenv/alpine-edge.sh @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + apk update + apk upgrade + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev + apk list --installed | sort > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" diff --git a/ci/buildenv/centos-stream-8.sh b/ci/buildenv/centos-stream-9.sh similarity index 90% rename from ci/buildenv/centos-stream-8.sh rename to ci/buildenv/centos-stream-9.sh index ca789c5..94326db 100644 --- a/ci/buildenv/centos-stream-8.sh +++ b/ci/buildenv/centos-stream-9.sh @@ -7,8 +7,7 @@ function install_buildenv() { dnf distro-sync -y dnf install 'dnf-command(config-manager)' -y - dnf config-manager --set-enabled -y powertools - dnf install -y centos-release-advanced-virtualization + dnf config-manager --set-enabled -y crb dnf install -y epel-release dnf install -y epel-next-release dnf install -y \ @@ -33,7 +32,6 @@ function install_buildenv() { glib2-devel \ glibc-devel \ glibc-langpack-en \ - glusterfs-api-devel \ gnutls-devel \ gobject-introspection-devel \ grep \ @@ -52,6 +50,7 @@ function install_buildenv() { libcurl-devel \ libgcrypt-devel \ libiscsi-devel \ + libnbd-devel \ libnl3-devel \ libpcap-devel \ libpciaccess-devel \ @@ -68,27 +67,27 @@ function install_buildenv() { lvm2 \ make \ meson \ - netcf-devel \ nfs-utils \ ninja-build \ numactl-devel \ numad \ parted-devel \ - perl \ + perl-base \ pkgconfig \ polkit \ pulseaudio-libs-devel \ python3 \ python3-docutils \ python3-flake8 \ + python3-pip \ + python3-pytest \ + python3-setuptools \ + python3-wheel \ qemu-img \ readline-devel \ - rpcgen \ rpm-build \ sanlock-devel \ - scrub \ sed \ - spice-gtk3-devel \ systemd-devel \ systemd-rpm-macros \ systemtap-sdt-devel \ @@ -96,11 +95,13 @@ function install_buildenv() { vte291-devel \ wireshark-devel \ yajl-devel + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED rpm -qa | sort > /packages.txt mkdir -p /usr/libexec/ccache-wrappers ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + /usr/bin/pip3 install black } export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" diff --git a/ci/buildenv/debian-10.sh b/ci/buildenv/debian-11.sh similarity index 90% rename from ci/buildenv/debian-10.sh rename to ci/buildenv/debian-11.sh index d57f16c..92fac31 100644 --- a/ci/buildenv/debian-10.sh +++ b/ci/buildenv/debian-11.sh @@ -16,6 +16,7 @@ function install_buildenv() { gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgovirt-dev \ libgtk-3-dev \ @@ -31,18 +32,15 @@ function install_buildenv() { libxml2-utils \ locales \ make \ + meson \ ninja-build \ - pkgconf \ - python3-pip \ - python3-setuptools \ - python3-wheel + pkgconf sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt mkdir -p /usr/libexec/ccache-wrappers ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - /usr/bin/pip3 install meson==0.56.0 } export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" diff --git a/ci/buildenv/ubuntu-2004.sh b/ci/buildenv/debian-12.sh similarity index 90% rename from ci/buildenv/ubuntu-2004.sh rename to ci/buildenv/debian-12.sh index 29daa03..92fac31 100644 --- a/ci/buildenv/ubuntu-2004.sh +++ b/ci/buildenv/debian-12.sh @@ -16,7 +16,9 @@ function install_buildenv() { gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ + libgovirt-dev \ libgtk-3-dev \ libgtk-vnc-2.0-dev \ librest-dev \ @@ -30,18 +32,15 @@ function install_buildenv() { libxml2-utils \ locales \ make \ + meson \ ninja-build \ - pkgconf \ - python3-pip \ - python3-setuptools \ - python3-wheel + pkgconf sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt mkdir -p /usr/libexec/ccache-wrappers ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - /usr/bin/pip3 install meson==0.56.0 } export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" diff --git a/ci/buildenv/debian-sid.sh b/ci/buildenv/debian-sid.sh index 682172f..92fac31 100644 --- a/ci/buildenv/debian-sid.sh +++ b/ci/buildenv/debian-sid.sh @@ -16,6 +16,7 @@ function install_buildenv() { gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgovirt-dev \ libgtk-3-dev \ diff --git a/ci/buildenv/fedora-35.sh b/ci/buildenv/fedora-39.sh similarity index 97% rename from ci/buildenv/fedora-35.sh rename to ci/buildenv/fedora-39.sh index ec3a747..b62add2 100644 --- a/ci/buildenv/fedora-35.sh +++ b/ci/buildenv/fedora-39.sh @@ -15,6 +15,7 @@ function install_buildenv() { gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/buildenv/fedora-36.sh b/ci/buildenv/fedora-40.sh similarity index 97% rename from ci/buildenv/fedora-36.sh rename to ci/buildenv/fedora-40.sh index ec3a747..b62add2 100644 --- a/ci/buildenv/fedora-36.sh +++ b/ci/buildenv/fedora-40.sh @@ -15,6 +15,7 @@ function install_buildenv() { gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/buildenv/fedora-rawhide-cross-mingw32.sh b/ci/buildenv/fedora-rawhide-cross-mingw32.sh index 078e202..9282038 100644 --- a/ci/buildenv/fedora-rawhide-cross-mingw32.sh +++ b/ci/buildenv/fedora-rawhide-cross-mingw32.sh @@ -8,7 +8,7 @@ function install_buildenv() { dnf update -y --nogpgcheck fedora-gpg-keys dnf distro-sync -y dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -29,6 +29,7 @@ function install_buildenv() { mingw32-gstreamer1-plugins-bad-free \ mingw32-gstreamer1-plugins-good \ mingw32-gtk3 \ + mingw32-headers \ mingw32-libgovirt \ mingw32-libvirt \ mingw32-libxml2 \ diff --git a/ci/buildenv/fedora-rawhide-cross-mingw64.sh b/ci/buildenv/fedora-rawhide-cross-mingw64.sh index da0458b..823e14f 100644 --- a/ci/buildenv/fedora-rawhide-cross-mingw64.sh +++ b/ci/buildenv/fedora-rawhide-cross-mingw64.sh @@ -8,7 +8,7 @@ function install_buildenv() { dnf update -y --nogpgcheck fedora-gpg-keys dnf distro-sync -y dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -29,6 +29,7 @@ function install_buildenv() { mingw64-gstreamer1-plugins-bad-free \ mingw64-gstreamer1-plugins-good \ mingw64-gtk3 \ + mingw64-headers \ mingw64-libgovirt \ mingw64-libvirt \ mingw64-libxml2 \ diff --git a/ci/buildenv/fedora-rawhide.sh b/ci/buildenv/fedora-rawhide.sh index c8bc7b6..426a412 100644 --- a/ci/buildenv/fedora-rawhide.sh +++ b/ci/buildenv/fedora-rawhide.sh @@ -8,7 +8,7 @@ function install_buildenv() { dnf update -y --nogpgcheck fedora-gpg-keys dnf distro-sync -y dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -16,6 +16,7 @@ function install_buildenv() { gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/buildenv/opensuse-leap-153.sh b/ci/buildenv/opensuse-leap-15.sh similarity index 87% rename from ci/buildenv/opensuse-leap-153.sh rename to ci/buildenv/opensuse-leap-15.sh index 90e72e3..5969649 100644 --- a/ci/buildenv/opensuse-leap-153.sh +++ b/ci/buildenv/opensuse-leap-15.sh @@ -7,7 +7,7 @@ function install_buildenv() { zypper update -y zypper install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -15,6 +15,7 @@ function install_buildenv() { gettext-runtime \ git \ glib2-devel \ + glibc-devel \ glibc-locale \ gtk-vnc-devel \ gtk3-devel \ @@ -27,11 +28,9 @@ function install_buildenv() { libxml2 \ libxml2-devel \ make \ + meson \ ninja \ pkgconfig \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build \ spice-gtk-devel \ vte-devel @@ -39,7 +38,6 @@ function install_buildenv() { mkdir -p /usr/libexec/ccache-wrappers ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - /usr/bin/pip3 install meson==0.56.0 } export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" diff --git a/ci/buildenv/opensuse-tumbleweed.sh b/ci/buildenv/opensuse-tumbleweed.sh index afc8e96..6bfd3c6 100644 --- a/ci/buildenv/opensuse-tumbleweed.sh +++ b/ci/buildenv/opensuse-tumbleweed.sh @@ -7,7 +7,7 @@ function install_buildenv() { zypper dist-upgrade -y zypper install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -15,6 +15,7 @@ function install_buildenv() { gettext-runtime \ git \ glib2-devel \ + glibc-devel \ glibc-locale \ gtk-vnc-devel \ gtk3-devel \ diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh index 681a8e9..843f318 100644 --- a/ci/buildenv/ubuntu-2204.sh +++ b/ci/buildenv/ubuntu-2204.sh @@ -16,6 +16,7 @@ function install_buildenv() { gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgtk-3-dev \ libgtk-vnc-2.0-dev \ diff --git a/ci/buildenv/ubuntu-2404.sh b/ci/buildenv/ubuntu-2404.sh new file mode 100644 index 0000000..843f318 --- /dev/null +++ b/ci/buildenv/ubuntu-2404.sh @@ -0,0 +1,48 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + icoutils \ + libc6-dev \ + libglib2.0-dev \ + libgtk-3-dev \ + libgtk-vnc-2.0-dev \ + librest-dev \ + libspice-client-gtk-3.0-dev \ + libtool \ + libtool-bin \ + libvirt-dev \ + libvirt-glib-1.0-dev \ + libvte-2.91-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + pkgconf + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" diff --git a/ci/containers/almalinux-8.Dockerfile b/ci/containers/almalinux-8.Dockerfile new file mode 100644 index 0000000..fd7785d --- /dev/null +++ b/ci/containers/almalinux-8.Dockerfile @@ -0,0 +1,49 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/almalinux:8 + +RUN dnf update -y && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y powertools && \ + dnf install -y centos-release-advanced-virtualization && \ + dnf install -y epel-release && \ + dnf install -y \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gtk-vnc2-devel \ + gtk3-devel \ + icoutils \ + libtool \ + libvirt-devel \ + libvirt-gobject-devel \ + libxml2 \ + libxml2-devel \ + make \ + meson \ + ninja-build \ + pkgconfig \ + rpm-build \ + spice-gtk3-devel \ + vte291-devel && \ + dnf autoremove -y && \ + dnf clean all -y && \ + rpm -qa | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" diff --git a/ci/containers/almalinux-9.Dockerfile b/ci/containers/almalinux-9.Dockerfile new file mode 100644 index 0000000..242eed6 --- /dev/null +++ b/ci/containers/almalinux-9.Dockerfile @@ -0,0 +1,113 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/almalinux:9 + +RUN dnf update -y && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y crb && \ + dnf install -y epel-release && \ + dnf install -y \ + audit-libs-devel \ + augeas \ + bash-completion \ + ca-certificates \ + ccache \ + clang \ + cpp \ + cyrus-sasl-devel \ + device-mapper-devel \ + diffutils \ + dwarves \ + ebtables \ + firewalld-filesystem \ + fuse-devel \ + gcc \ + gdk-pixbuf2-devel \ + gettext \ + git \ + glib2-devel \ + glibc-devel \ + glibc-langpack-en \ + gnutls-devel \ + gobject-introspection-devel \ + grep \ + gtk-doc \ + gtk3-devel \ + icoutils \ + iproute \ + iproute-tc \ + iptables \ + iscsi-initiator-utils \ + kmod \ + libacl-devel \ + libattr-devel \ + libblkid-devel \ + libcap-ng-devel \ + libcurl-devel \ + libgcrypt-devel \ + libiscsi-devel \ + libnbd-devel \ + libnl3-devel \ + libpcap-devel \ + libpciaccess-devel \ + librbd-devel \ + libselinux-devel \ + libssh-devel \ + libssh2-devel \ + libtirpc-devel \ + libtool \ + libwsman-devel \ + libxml2 \ + libxml2-devel \ + libxslt \ + lvm2 \ + make \ + meson \ + nfs-utils \ + ninja-build \ + numactl-devel \ + numad \ + parted-devel \ + perl-base \ + pkgconfig \ + polkit \ + pulseaudio-libs-devel \ + python3 \ + python3-docutils \ + python3-flake8 \ + python3-pip \ + python3-pytest \ + python3-setuptools \ + python3-wheel \ + qemu-img \ + readline-devel \ + rpm-build \ + sanlock-devel \ + sed \ + systemd-devel \ + systemd-rpm-macros \ + systemtap-sdt-devel \ + vala \ + vte291-devel \ + wireshark-devel \ + yajl-devel && \ + dnf autoremove -y && \ + dnf clean all -y && \ + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \ + rpm -qa | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +RUN /usr/bin/pip3 install black + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" diff --git a/ci/containers/alpine-318.Dockerfile b/ci/containers/alpine-318.Dockerfile new file mode 100644 index 0000000..666c1eb --- /dev/null +++ b/ci/containers/alpine-318.Dockerfile @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/alpine:3.18 + +RUN apk update && \ + apk upgrade && \ + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev && \ + apk list --installed | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" diff --git a/ci/containers/alpine-319.Dockerfile b/ci/containers/alpine-319.Dockerfile new file mode 100644 index 0000000..465f6ae --- /dev/null +++ b/ci/containers/alpine-319.Dockerfile @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/alpine:3.19 + +RUN apk update && \ + apk upgrade && \ + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev && \ + apk list --installed | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" diff --git a/ci/containers/alpine-edge.Dockerfile b/ci/containers/alpine-edge.Dockerfile new file mode 100644 index 0000000..b0e655b --- /dev/null +++ b/ci/containers/alpine-edge.Dockerfile @@ -0,0 +1,43 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/alpine:edge + +RUN apk update && \ + apk upgrade && \ + apk add \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + glib-dev \ + gtk+3.0-dev \ + gtk-vnc-dev \ + icoutils \ + libtool \ + libvirt-dev \ + libvirt-glib-dev \ + libxml2-dev \ + libxml2-utils \ + make \ + meson \ + musl-dev \ + pkgconf \ + rest-dev \ + samurai \ + spice-gtk-dev \ + vte3-dev && \ + apk list --installed | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" diff --git a/ci/containers/centos-stream-8.Dockerfile b/ci/containers/centos-stream-9.Dockerfile similarity index 88% rename from ci/containers/centos-stream-8.Dockerfile rename to ci/containers/centos-stream-9.Dockerfile index 9775c76..4a929c7 100644 --- a/ci/containers/centos-stream-8.Dockerfile +++ b/ci/containers/centos-stream-9.Dockerfile @@ -4,12 +4,11 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM quay.io/centos/centos:stream8 +FROM quay.io/centos/centos:stream9 RUN dnf distro-sync -y && \ dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y powertools && \ - dnf install -y centos-release-advanced-virtualization && \ + dnf config-manager --set-enabled -y crb && \ dnf install -y epel-release && \ dnf install -y epel-next-release && \ dnf install -y \ @@ -34,7 +33,6 @@ RUN dnf distro-sync -y && \ glib2-devel \ glibc-devel \ glibc-langpack-en \ - glusterfs-api-devel \ gnutls-devel \ gobject-introspection-devel \ grep \ @@ -53,6 +51,7 @@ RUN dnf distro-sync -y && \ libcurl-devel \ libgcrypt-devel \ libiscsi-devel \ + libnbd-devel \ libnl3-devel \ libpcap-devel \ libpciaccess-devel \ @@ -69,27 +68,27 @@ RUN dnf distro-sync -y && \ lvm2 \ make \ meson \ - netcf-devel \ nfs-utils \ ninja-build \ numactl-devel \ numad \ parted-devel \ - perl \ + perl-base \ pkgconfig \ polkit \ pulseaudio-libs-devel \ python3 \ python3-docutils \ python3-flake8 \ + python3-pip \ + python3-pytest \ + python3-setuptools \ + python3-wheel \ qemu-img \ readline-devel \ - rpcgen \ rpm-build \ sanlock-devel \ - scrub \ sed \ - spice-gtk3-devel \ systemd-devel \ systemd-rpm-macros \ systemtap-sdt-devel \ @@ -99,12 +98,15 @@ RUN dnf distro-sync -y && \ yajl-devel && \ dnf autoremove -y && \ dnf clean all -y && \ + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \ rpm -qa | sort > /packages.txt && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +RUN /usr/bin/pip3 install black + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/debian-10.Dockerfile b/ci/containers/debian-11.Dockerfile similarity index 88% rename from ci/containers/debian-10.Dockerfile rename to ci/containers/debian-11.Dockerfile index d147126..e3e7ffb 100644 --- a/ci/containers/debian-10.Dockerfile +++ b/ci/containers/debian-11.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:10-slim +FROM docker.io/library/debian:11-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -18,6 +18,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgovirt-dev \ libgtk-3-dev \ @@ -33,11 +34,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libxml2-utils \ locales \ make \ + meson \ ninja-build \ - pkgconf \ - python3-pip \ - python3-setuptools \ - python3-wheel && \ + pkgconf && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -47,8 +46,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc -RUN /usr/bin/pip3 install meson==0.56.0 - ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/debian-12.Dockerfile similarity index 88% rename from ci/containers/ubuntu-2004.Dockerfile rename to ci/containers/debian-12.Dockerfile index c36a02c..7887372 100644 --- a/ci/containers/ubuntu-2004.Dockerfile +++ b/ci/containers/debian-12.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/ubuntu:20.04 +FROM docker.io/library/debian:12-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -18,7 +18,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ + libgovirt-dev \ libgtk-3-dev \ libgtk-vnc-2.0-dev \ librest-dev \ @@ -32,11 +34,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libxml2-utils \ locales \ make \ + meson \ ninja-build \ - pkgconf \ - python3-pip \ - python3-setuptools \ - python3-wheel && \ + pkgconf && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -46,8 +46,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc -RUN /usr/bin/pip3 install meson==0.56.0 - ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile index 2e02698..b2a9a89 100644 --- a/ci/containers/debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -18,6 +18,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgovirt-dev \ libgtk-3-dev \ diff --git a/ci/containers/fedora-35.Dockerfile b/ci/containers/fedora-39.Dockerfile similarity index 92% rename from ci/containers/fedora-35.Dockerfile rename to ci/containers/fedora-39.Dockerfile index 28c58bc..2fea518 100644 --- a/ci/containers/fedora-35.Dockerfile +++ b/ci/containers/fedora-39.Dockerfile @@ -4,17 +4,17 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:35 +FROM registry.fedoraproject.org/fedora:39 RUN dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ @@ -26,6 +26,7 @@ exec "$@"' > /usr/bin/nosync && \ gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/containers/fedora-36.Dockerfile b/ci/containers/fedora-40.Dockerfile similarity index 92% rename from ci/containers/fedora-36.Dockerfile rename to ci/containers/fedora-40.Dockerfile index 962d387..f279ec7 100644 --- a/ci/containers/fedora-36.Dockerfile +++ b/ci/containers/fedora-40.Dockerfile @@ -4,17 +4,17 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:36 +FROM registry.fedoraproject.org/fedora:40 RUN dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ @@ -26,6 +26,7 @@ exec "$@"' > /usr/bin/nosync && \ gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile index b5e517c..ed7466c 100644 --- a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile +++ b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile @@ -8,18 +8,18 @@ FROM registry.fedoraproject.org/fedora:rawhide RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf distro-sync -y && \ nosync dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -48,6 +48,7 @@ RUN nosync dnf install -y \ mingw32-gstreamer1-plugins-bad-free \ mingw32-gstreamer1-plugins-good \ mingw32-gtk3 \ + mingw32-headers \ mingw32-libgovirt \ mingw32-libvirt \ mingw32-libxml2 \ diff --git a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile index 477d735..0ef9568 100644 --- a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile +++ b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile @@ -8,18 +8,18 @@ FROM registry.fedoraproject.org/fedora:rawhide RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf distro-sync -y && \ nosync dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -48,6 +48,7 @@ RUN nosync dnf install -y \ mingw64-gstreamer1-plugins-bad-free \ mingw64-gstreamer1-plugins-good \ mingw64-gtk3 \ + mingw64-headers \ mingw64-libgovirt \ mingw64-libvirt \ mingw64-libxml2 \ diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index 4f2e5b5..268e73a 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -8,18 +8,18 @@ FROM registry.fedoraproject.org/fedora:rawhide RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf distro-sync -y && \ nosync dnf install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -27,6 +27,7 @@ exec "$@"' > /usr/bin/nosync && \ gettext \ git \ glib2-devel \ + glibc-devel \ glibc-langpack-en \ gtk-vnc2-devel \ gtk3-devel \ diff --git a/ci/containers/opensuse-leap-153.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile similarity index 84% rename from ci/containers/opensuse-leap-153.Dockerfile rename to ci/containers/opensuse-leap-15.Dockerfile index 7252ff5..714db11 100644 --- a/ci/containers/opensuse-leap-153.Dockerfile +++ b/ci/containers/opensuse-leap-15.Dockerfile @@ -4,11 +4,11 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.opensuse.org/opensuse/leap:15.3 +FROM registry.opensuse.org/opensuse/leap:15.5 RUN zypper update -y && \ zypper install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -16,6 +16,7 @@ RUN zypper update -y && \ gettext-runtime \ git \ glib2-devel \ + glibc-devel \ glibc-locale \ gtk-vnc-devel \ gtk3-devel \ @@ -28,11 +29,9 @@ RUN zypper update -y && \ libxml2 \ libxml2-devel \ make \ + meson \ ninja \ pkgconfig \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build \ spice-gtk-devel \ vte-devel && \ @@ -42,8 +41,6 @@ RUN zypper update -y && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc -RUN /usr/bin/pip3 install meson==0.56.0 - ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/opensuse-tumbleweed.Dockerfile b/ci/containers/opensuse-tumbleweed.Dockerfile index dba57fb..9dd1974 100644 --- a/ci/containers/opensuse-tumbleweed.Dockerfile +++ b/ci/containers/opensuse-tumbleweed.Dockerfile @@ -8,7 +8,7 @@ FROM registry.opensuse.org/opensuse/tumbleweed:latest RUN zypper dist-upgrade -y && \ zypper install -y \ - bash-completion \ + bash-completion-devel \ ca-certificates \ ccache \ cppi \ @@ -16,6 +16,7 @@ RUN zypper dist-upgrade -y && \ gettext-runtime \ git \ glib2-devel \ + glibc-devel \ glibc-locale \ gtk-vnc-devel \ gtk3-devel \ diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile index 02214ba..9c0d41e 100644 --- a/ci/containers/ubuntu-2204.Dockerfile +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -18,6 +18,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ icoutils \ + libc6-dev \ libglib2.0-dev \ libgtk-3-dev \ libgtk-vnc-2.0-dev \ diff --git a/ci/containers/ubuntu-2404.Dockerfile b/ci/containers/ubuntu-2404.Dockerfile new file mode 100644 index 0000000..2fbe94f --- /dev/null +++ b/ci/containers/ubuntu-2404.Dockerfile @@ -0,0 +1,51 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/ubuntu:24.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ + bash-completion \ + ca-certificates \ + ccache \ + gcc \ + gettext \ + git \ + icoutils \ + libc6-dev \ + libglib2.0-dev \ + libgtk-3-dev \ + libgtk-vnc-2.0-dev \ + librest-dev \ + libspice-client-gtk-3.0-dev \ + libtool \ + libtool-bin \ + libvirt-dev \ + libvirt-glib-1.0-dev \ + libvte-2.91-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + pkgconf && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" diff --git a/ci/gitlab.yml b/ci/gitlab.yml index ac8e5e8..d0e990b 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -14,6 +14,12 @@ # created/updated. Setting this variable to a non-empty # value allows CI testing prior to opening a merge request. # +# - RUN_PIPELINE_UPSTREAM_ENV - same semantics as RUN_PIPELINE, +# but uses the CI environment (containers) from the upstream project +# rather than creating and updating a throwaway environment +# Should not be used if the pushed branch includes CI container +# changes. +# # - RUN_CONTAINER_BUILDS - CI pipelines in upstream only # publish containers if CI file changes are detected. # Setting this variable to a non-empty value will force @@ -44,6 +50,7 @@ variables: RUN_UPSTREAM_NAMESPACE: virt-viewer + FF_SCRIPT_SECTIONS: 1 workflow: @@ -67,6 +74,7 @@ workflow: debug: image: docker.io/library/alpine:3 stage: sanity_checks + interruptible: true needs: [] script: - printenv | sort diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index b9c9e0f..c39edd8 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -9,26 +9,36 @@ # We use pre-built containers for any pipelines that are: # # - Validating code committed on default upstream branch -# - Validating patches targetting default upstream branch +# - Validating patches targeting default upstream branch # which do not have CI changes # # We use a local build env for any pipelines that are: # # - Validating code committed to a non-default upstream branch -# - Validating patches targetting a non-default upstream branch -# - Validating patches targetting default upstream branch which +# - Validating patches targeting a non-default upstream branch +# - Validating patches targeting default upstream branch which # include CI changes # - Validating code committed to a fork branch # -# Note: the rules across the prebuilt_env and local_env templates +# Note: the rules across the prebuilt and local container scenarios # should be logical inverses, such that jobs are mutually exclusive # -.gitlab_native_build_job_prebuilt_env: - image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/virt-viewer/ci-$NAME:latest +.gitlab_native_build_job: + image: $IMAGE stage: builds + interruptible: true before_script: + - if test "$IMAGE" == "$TARGET_BASE_IMAGE" ; + then + source ci/buildenv/$NAME.sh ; + install_buildenv ; + fi - cat /packages.txt + variables: + IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/virt-viewer/ci-$NAME:latest rules: + ### PUSH events + # upstream: pushes to the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual @@ -36,82 +46,96 @@ - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: on_success - # upstream: other web/api/scheduled pipelines targetting the default branch + # forks: pushes to a branch when a pipeline run in upstream env is explicitly requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' + when: on_success + + # forks: pushes to branches with pipeline requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + + ### MERGE REQUEST events + + # upstream+forks: merge requests targeting the default branch, with CI changes + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + # upstream+forks: merge requests targeting the default branch + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + when: on_success + + # upstream+forks: merge requests targeting non-default branches + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + + ### WEB / API / SCHEDULED events + + # upstream: other web/api/scheduled pipelines targeting the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' when: on_success - # upstream+forks: merge requests targetting the default branch, without CI changes - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: never - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - when: on_success - - # upstream+forks: that's all folks - - when: never - -.gitlab_native_build_job_local_env: - image: $IMAGE - stage: builds - before_script: - - source ci/buildenv/$NAME.sh - - install_buildenv - - cat /packages.txt - rules: - # upstream: pushes to a non-default branch - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' - when: on_success - - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' - when: on_success - - # upstream: other web/api/scheduled pipelines targetting non-default branches + # upstream: other web/api/scheduled pipelines targeting non-default branches - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # forks: other web/api/scheduled pipelines + # forks: other web/api/scheduled pipelines on any branches - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # upstream+forks: merge requests targetting the default branch, with CI changes - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: on_success - # upstream+forks: merge requests targetting non-default branches - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' - when: on_success + ### Catch all unhandled events # upstream+forks: that's all folks - when: never @@ -121,26 +145,36 @@ # We use pre-built containers for any pipelines that are: # # - Validating code committed on default upstream branch -# - Validating patches targetting default upstream branch +# - Validating patches targeting default upstream branch # which do not have CI changes # # We use a local build env for any pipelines that are: # # - Validating code committed to a non-default upstream branch -# - Validating patches targetting a non-default upstream branch -# - Validating patches targetting default upstream branch which +# - Validating patches targeting a non-default upstream branch +# - Validating patches targeting default upstream branch which # include CI changes # - Validating code committed to a fork branch # -# Note: the rules across the prebuilt_env and local_env templates +# Note: the rules across the prebuilt and local container scenarios # should be logical inverses, such that jobs are mutually exclusive # -.gitlab_cross_build_job_prebuilt_env: - image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/virt-viewer/ci-$NAME-cross-$CROSS:latest +.gitlab_cross_build_job: + image: $IMAGE stage: builds + interruptible: true before_script: + - if test "$IMAGE" == "$TARGET_BASE_IMAGE" ; + then + source ci/buildenv/$NAME-cross-$CROSS.sh ; + install_buildenv ; + fi - cat /packages.txt + variables: + IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/virt-viewer/ci-$NAME-cross-$CROSS:latest rules: + ### PUSH events + # upstream: pushes to the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual @@ -148,82 +182,96 @@ - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: on_success - # upstream: other web/api/scheduled pipelines targetting the default branch + # forks: pushes to a branch when a pipeline run in upstream env is explicitly requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' + when: on_success + + # forks: pushes to branches with pipeline requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + + ### MERGE REQUEST events + + # upstream+forks: merge requests targeting the default branch, with CI changes + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME-cross-$CROSS.Dockerfile + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME-cross-$CROSS.Dockerfile + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + # upstream+forks: merge requests targeting the default branch + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + when: on_success + + # upstream+forks: merge requests targeting non-default branches + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + + ### WEB / API / SCHEDULED events + + # upstream: other web/api/scheduled pipelines targeting the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' when: on_success - # upstream+forks: merge requests targetting the default branch, without CI changes - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: never - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - when: on_success - - # upstream+forks: that's all folks - - when: never - -.gitlab_cross_build_job_local_env: - image: $IMAGE - stage: builds - before_script: - - source ci/buildenv/$NAME.sh - - install_buildenv - - cat /packages.txt - rules: - # upstream: pushes to a non-default branch - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' - when: on_success - - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' - when: on_success - - # upstream: other web/api/scheduled pipelines targetting non-default branches + # upstream: other web/api/scheduled pipelines targeting non-default branches - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # forks: other web/api/scheduled pipelines + # forks: other web/api/scheduled pipelines on any branches - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # upstream+forks: merge requests targetting the default branch, with CI changes - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: on_success - # upstream+forks: merge requests targetting non-default branches - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' - when: on_success + ### Catch all unhandled events # upstream+forks: that's all folks - when: never diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index cfd3303..1144d80 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -7,138 +7,155 @@ # Native build jobs -x86_64-centos-stream-8-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-almalinux-8: + extends: .native_build_job needs: - - job: x86_64-centos-stream-8-container + - job: x86_64-almalinux-8-container optional: true allow_failure: false variables: - NAME: centos-stream-8 - RPM: skip - -x86_64-centos-stream-8-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: quay.io/centos/centos:stream8 - NAME: centos-stream-8 + NAME: almalinux-8 RPM: skip + TARGET_BASE_IMAGE: docker.io/library/almalinux:8 -x86_64-debian-10-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-almalinux-9: + extends: .native_build_job needs: - - job: x86_64-debian-10-container + - job: x86_64-almalinux-9-container optional: true allow_failure: false variables: - NAME: debian-10 + NAME: almalinux-9 + RPM: skip + TARGET_BASE_IMAGE: docker.io/library/almalinux:9 -x86_64-debian-10-local-env: - extends: .native_build_job_local_env - needs: [] + +x86_64-alpine-318: + extends: .native_build_job + needs: + - job: x86_64-alpine-318-container + optional: true allow_failure: false variables: - IMAGE: docker.io/library/debian:10-slim - NAME: debian-10 + NAME: alpine-318 + TARGET_BASE_IMAGE: docker.io/library/alpine:3.18 -x86_64-debian-sid-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-alpine-319: + extends: .native_build_job + needs: + - job: x86_64-alpine-319-container + optional: true + allow_failure: false + variables: + NAME: alpine-319 + TARGET_BASE_IMAGE: docker.io/library/alpine:3.19 + + +x86_64-alpine-edge: + extends: .native_build_job + needs: + - job: x86_64-alpine-edge-container + optional: true + allow_failure: true + variables: + NAME: alpine-edge + TARGET_BASE_IMAGE: docker.io/library/alpine:edge + + +x86_64-centos-stream-9: + extends: .native_build_job + needs: + - job: x86_64-centos-stream-9-container + optional: true + allow_failure: false + variables: + NAME: centos-stream-9 + RPM: skip + TARGET_BASE_IMAGE: quay.io/centos/centos:stream9 + + +x86_64-debian-11: + extends: .native_build_job + needs: + - job: x86_64-debian-11-container + optional: true + allow_failure: false + variables: + NAME: debian-11 + TARGET_BASE_IMAGE: docker.io/library/debian:11-slim + + +x86_64-debian-12: + extends: .native_build_job + needs: + - job: x86_64-debian-12-container + optional: true + allow_failure: false + variables: + NAME: debian-12 + TARGET_BASE_IMAGE: docker.io/library/debian:12-slim + + +x86_64-debian-sid: + extends: .native_build_job needs: - job: x86_64-debian-sid-container optional: true allow_failure: true variables: NAME: debian-sid - -x86_64-debian-sid-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: true - variables: - IMAGE: docker.io/library/debian:sid-slim - NAME: debian-sid + TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim -x86_64-fedora-35-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-39: + extends: .native_build_job needs: - - job: x86_64-fedora-35-container + - job: x86_64-fedora-39-container optional: true allow_failure: false variables: - NAME: fedora-35 - -x86_64-fedora-35-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.fedoraproject.org/fedora:35 - NAME: fedora-35 + NAME: fedora-39 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39 -x86_64-fedora-36-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-40: + extends: .native_build_job needs: - - job: x86_64-fedora-36-container + - job: x86_64-fedora-40-container optional: true allow_failure: false variables: - NAME: fedora-36 - -x86_64-fedora-36-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.fedoraproject.org/fedora:36 - NAME: fedora-36 + NAME: fedora-40 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:40 -x86_64-fedora-rawhide-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-rawhide: + extends: .native_build_job needs: - job: x86_64-fedora-rawhide-container optional: true allow_failure: true variables: NAME: fedora-rawhide - -x86_64-fedora-rawhide-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: true - variables: - IMAGE: registry.fedoraproject.org/fedora:rawhide - NAME: fedora-rawhide + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide -x86_64-opensuse-leap-153-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-opensuse-leap-15: + extends: .native_build_job needs: - - job: x86_64-opensuse-leap-153-container + - job: x86_64-opensuse-leap-15-container optional: true allow_failure: false variables: - NAME: opensuse-leap-153 - RPM: skip - -x86_64-opensuse-leap-153-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.opensuse.org/opensuse/leap:15.3 - NAME: opensuse-leap-153 + NAME: opensuse-leap-15 RPM: skip + TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5 -x86_64-opensuse-tumbleweed-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-opensuse-tumbleweed: + extends: .native_build_job needs: - job: x86_64-opensuse-tumbleweed-container optional: true @@ -146,58 +163,36 @@ x86_64-opensuse-tumbleweed-prebuilt-env: variables: NAME: opensuse-tumbleweed RPM: skip - -x86_64-opensuse-tumbleweed-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: true - variables: - IMAGE: registry.opensuse.org/opensuse/tumbleweed:latest - NAME: opensuse-tumbleweed - RPM: skip + TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/tumbleweed:latest -x86_64-ubuntu-2004-prebuilt-env: - extends: .native_build_job_prebuilt_env - needs: - - job: x86_64-ubuntu-2004-container - optional: true - allow_failure: false - variables: - NAME: ubuntu-2004 - -x86_64-ubuntu-2004-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/ubuntu:20.04 - NAME: ubuntu-2004 - - -x86_64-ubuntu-2204-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-ubuntu-2204: + extends: .native_build_job needs: - job: x86_64-ubuntu-2204-container optional: true allow_failure: false variables: NAME: ubuntu-2204 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 -x86_64-ubuntu-2204-local-env: - extends: .native_build_job_local_env - needs: [] + +x86_64-ubuntu-2404: + extends: .native_build_job + needs: + - job: x86_64-ubuntu-2404-container + optional: true allow_failure: false variables: - IMAGE: docker.io/library/ubuntu:22.04 - NAME: ubuntu-2204 + NAME: ubuntu-2404 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:24.04 # Cross build jobs -mingw32-fedora-rawhide-prebuilt-env: - extends: .cross_build_job_prebuilt_env +mingw32-fedora-rawhide: + extends: .cross_build_job needs: - job: mingw32-fedora-rawhide-container optional: true @@ -205,27 +200,15 @@ mingw32-fedora-rawhide-prebuilt-env: variables: CROSS: mingw32 NAME: fedora-rawhide - artifacts: - expire_in: 2 days - paths: - - data/virt-viewer-x86*.msi - -mingw32-fedora-rawhide-local-env: - extends: .cross_build_job_local_env - needs: [] - allow_failure: true - variables: - CROSS: mingw32 - IMAGE: registry.fedoraproject.org/fedora:rawhide - NAME: fedora-rawhide + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide artifacts: expire_in: 2 days paths: - data/virt-viewer-x86*.msi -mingw64-fedora-rawhide-prebuilt-env: - extends: .cross_build_job_prebuilt_env +mingw64-fedora-rawhide: + extends: .cross_build_job needs: - job: mingw64-fedora-rawhide-container optional: true @@ -233,19 +216,7 @@ mingw64-fedora-rawhide-prebuilt-env: variables: CROSS: mingw64 NAME: fedora-rawhide - artifacts: - expire_in: 2 days - paths: - - data/virt-viewer-x64*.msi - -mingw64-fedora-rawhide-local-env: - extends: .cross_build_job_local_env - needs: [] - allow_failure: true - variables: - CROSS: mingw64 - IMAGE: registry.fedoraproject.org/fedora:rawhide - NAME: fedora-rawhide + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide artifacts: expire_in: 2 days paths: diff --git a/ci/gitlab/container-templates.yml b/ci/gitlab/container-templates.yml index a577028..adc8a1a 100644 --- a/ci/gitlab/container-templates.yml +++ b/ci/gitlab/container-templates.yml @@ -14,8 +14,9 @@ # Note: never publish from merge requests since they have non-committed code # .container_job: - image: docker:stable + image: docker:latest stage: containers + interruptible: false needs: [] services: - docker:dind diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml index a18487b..a7b1e36 100644 --- a/ci/gitlab/containers.yml +++ b/ci/gitlab/containers.yml @@ -7,18 +7,60 @@ # Native container jobs -x86_64-centos-stream-8-container: +x86_64-almalinux-8-container: extends: .container_job allow_failure: false variables: - NAME: centos-stream-8 + NAME: almalinux-8 -x86_64-debian-10-container: +x86_64-almalinux-9-container: extends: .container_job allow_failure: false variables: - NAME: debian-10 + NAME: almalinux-9 + + +x86_64-alpine-318-container: + extends: .container_job + allow_failure: false + variables: + NAME: alpine-318 + + +x86_64-alpine-319-container: + extends: .container_job + allow_failure: false + variables: + NAME: alpine-319 + + +x86_64-alpine-edge-container: + extends: .container_job + allow_failure: true + variables: + NAME: alpine-edge + + +x86_64-centos-stream-9-container: + extends: .container_job + allow_failure: false + variables: + NAME: centos-stream-9 + + +x86_64-debian-11-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-11 + + +x86_64-debian-12-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-12 x86_64-debian-sid-container: @@ -28,18 +70,18 @@ x86_64-debian-sid-container: NAME: debian-sid -x86_64-fedora-35-container: +x86_64-fedora-39-container: extends: .container_job allow_failure: false variables: - NAME: fedora-35 + NAME: fedora-39 -x86_64-fedora-36-container: +x86_64-fedora-40-container: extends: .container_job allow_failure: false variables: - NAME: fedora-36 + NAME: fedora-40 x86_64-fedora-rawhide-container: @@ -49,11 +91,11 @@ x86_64-fedora-rawhide-container: NAME: fedora-rawhide -x86_64-opensuse-leap-153-container: +x86_64-opensuse-leap-15-container: extends: .container_job allow_failure: false variables: - NAME: opensuse-leap-153 + NAME: opensuse-leap-15 x86_64-opensuse-tumbleweed-container: @@ -63,13 +105,6 @@ x86_64-opensuse-tumbleweed-container: NAME: opensuse-tumbleweed -x86_64-ubuntu-2004-container: - extends: .container_job - allow_failure: false - variables: - NAME: ubuntu-2004 - - x86_64-ubuntu-2204-container: extends: .container_job allow_failure: false @@ -77,6 +112,13 @@ x86_64-ubuntu-2204-container: NAME: ubuntu-2204 +x86_64-ubuntu-2404-container: + extends: .container_job + allow_failure: false + variables: + NAME: ubuntu-2404 + + # Cross container jobs diff --git a/ci/gitlab/sanity-checks.yml b/ci/gitlab/sanity-checks.yml index f843c7f..d2b1768 100644 --- a/ci/gitlab/sanity-checks.yml +++ b/ci/gitlab/sanity-checks.yml @@ -8,7 +8,8 @@ check-dco: stage: sanity_checks needs: [] - image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master + image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:latest + interruptible: true script: - /check-dco "$RUN_UPSTREAM_NAMESPACE" rules: @@ -16,9 +17,11 @@ check-dco: - if: '$CI_PIPELINE_SOURCE =~ "merge_request_event"' when: on_success - # forks: pushes to branches with pipeline requested + # forks: pushes to branches with pipeline requested (including upstream env pipelines) - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE' when: on_success + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE_UPSTREAM_ENV' + when: on_success # upstream+forks: that's all folks - when: never diff --git a/ci/manifest.yml b/ci/manifest.yml index 97fe579..9df958a 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -9,7 +9,13 @@ gitlab: project: virt-viewer targets: - centos-stream-8: + almalinux-8: + jobs: + - arch: x86_64 + variables: + RPM: skip + + almalinux-9: projects: - virt-viewer - https://gitlab.com/libvirt/libvirt/-/raw/master/ci/lcitool/projects/libvirt.yml @@ -21,37 +27,51 @@ targets: variables: RPM: skip - debian-10: x86_64 + alpine-318: x86_64 + + alpine-319: x86_64 + + alpine-edge: x86_64 + + centos-stream-9: + projects: + - virt-viewer + - https://gitlab.com/libvirt/libvirt/-/raw/master/ci/lcitool/projects/libvirt.yml + - https://gitlab.com/libvirt/libvirt-glib/-/raw/master/ci/lcitool/projects/libvirt-glib.yml + - https://gitlab.gnome.org/GNOME/gtk-vnc/-/raw/master/ci/lcitool/projects/gtk-vnc.yml - debian-sid: jobs: - arch: x86_64 - allow-failure: true + variables: + RPM: skip - fedora-35: x86_64 + debian-11: x86_64 - fedora-36: x86_64 + debian-12: x86_64 + + debian-sid: x86_64 + + fedora-39: x86_64 + + fedora-40: x86_64 fedora-rawhide: jobs: - arch: x86_64 - allow-failure: true - arch: mingw32 - allow-failure: true artifacts: expiry: 30 days paths: - data/virt-viewer-x86*.msi - arch: mingw64 - allow-failure: true artifacts: expiry: 30 days paths: - data/virt-viewer-x64*.msi - opensuse-leap-153: + opensuse-leap-15: jobs: - arch: x86_64 variables: @@ -60,10 +80,9 @@ targets: opensuse-tumbleweed: jobs: - arch: x86_64 - allow-failure: true variables: RPM: skip - ubuntu-2004: x86_64 - ubuntu-2204: x86_64 + + ubuntu-2404: x86_64