From 9b01abbb4a4c1754771b4c0a5ff47818b1c116ee Mon Sep 17 00:00:00 2001 From: Rolv Apneseth Date: Thu, 11 Jun 2026 14:13:35 +0100 Subject: [PATCH 1/3] .zuul, playbooks: Parameterise setup-env.yaml dependencies With this change, jobs for different platforms can select their own dependency playbook without needing a separate setup-env-* file. This allows us to eliminate setup-env-restricted.yaml, as it was identical to setup-env.yaml except for the include_tasks line. This will also be used for the FCOS jobs. Assisted-by: Claude (claude-opus-4-6) Signed-off-by: Rolv Apneseth --- .zuul.yaml | 4 +++- playbooks/setup-env-restricted.yaml | 25 ------------------------- playbooks/setup-env.yaml | 2 +- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 playbooks/setup-env-restricted.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 9cee90813..2fc5542b2 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -45,7 +45,9 @@ nodes: - name: fedora-rawhide label: cloud-fedora-rawhide - pre-run: playbooks/setup-env-restricted.yaml + vars: + dependencies_playbook: dependencies-fedora-restricted.yaml + pre-run: playbooks/setup-env.yaml run: playbooks/unit-test.yaml - job: diff --git a/playbooks/setup-env-restricted.yaml b/playbooks/setup-env-restricted.yaml deleted file mode 100644 index dd0f3ba98..000000000 --- a/playbooks/setup-env-restricted.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright © 2023 – 2026 Red Hat, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - ---- -- hosts: all - tasks: - - include_tasks: dependencies-fedora-restricted.yaml - - - name: Set up build directory - command: meson setup builddir - args: - chdir: '{{ zuul.project.src_dir }}' diff --git a/playbooks/setup-env.yaml b/playbooks/setup-env.yaml index 93b9cff83..b9953b508 100644 --- a/playbooks/setup-env.yaml +++ b/playbooks/setup-env.yaml @@ -17,7 +17,7 @@ --- - hosts: all tasks: - - include_tasks: dependencies-fedora.yaml + - include_tasks: "{{ dependencies_playbook | default('dependencies-fedora.yaml') }}" - name: Set up build directory command: meson setup builddir From 3a5ade60a34bede26b7bd9749bd5b816021dbfdd Mon Sep 17 00:00:00 2001 From: Rolv Apneseth Date: Thu, 11 Jun 2026 15:10:22 +0100 Subject: [PATCH 2/3] .zuul, playbooks: Add Fedora CoreOS to CI Add system tests across the stable, next and testing Fedora CoreOS streams, with some minor refactoring for shared dependency setup with Fedora. Also added a cat /etc/os-release to the common dependency setup as it may also be helpful on Fedora runs. Assisted-by: Claude (claude-opus-4-6) Signed-off-by: Rolv Apneseth --- .zuul.yaml | 131 ++++++++++++++++++++++ playbooks/dependencies-common.yaml | 58 ++++++++++ playbooks/dependencies-fedora-coreos.yaml | 53 +++++++++ playbooks/dependencies-fedora.yaml | 40 +------ playbooks/setup-env.yaml | 2 +- 5 files changed, 244 insertions(+), 40 deletions(-) create mode 100644 playbooks/dependencies-common.yaml create mode 100644 playbooks/dependencies-fedora-coreos.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 2fc5542b2..51c3ef2c7 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -182,6 +182,110 @@ pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-ubuntu.yaml +- job: + name: system-test-fedora-coreos + abstract: true + voting: false + timeout: 6300 + vars: + dependencies_playbook: dependencies-fedora-coreos.yaml + # Redirect installs from read-only /usr to writable /usr/local + meson_setup_args: >- + -Dfish_completions_dir=/usr/local/share/fish/vendor_completions.d + -Dprofile_dir=/usr/local/share/profile.d + -Dtmpfiles_dir=/usr/local/lib/tmpfiles.d + pre-run: playbooks/setup-env.yaml + +- job: + name: system-test-fedora-coreos-next-commands-options + parent: system-test-fedora-coreos + description: Run Toolbx's commands-options system tests in Fedora CoreOS next + nodeset: + nodes: + - name: fedora-coreos-next + label: cloud-fedora-coreos-next + run: playbooks/system-test-commands-options.yaml + +- job: + name: system-test-fedora-coreos-next-runtime-environment-arch-fedora + parent: system-test-fedora-coreos + description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora CoreOS next + nodeset: + nodes: + - name: fedora-coreos-next + label: cloud-fedora-coreos-next + run: playbooks/system-test-runtime-environment-arch-fedora.yaml + +- job: + name: system-test-fedora-coreos-next-runtime-environment-ubuntu + parent: system-test-fedora-coreos + description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora CoreOS next + nodeset: + nodes: + - name: fedora-coreos-next + label: cloud-fedora-coreos-next + run: playbooks/system-test-runtime-environment-ubuntu.yaml + +- job: + name: system-test-fedora-coreos-stable-commands-options + parent: system-test-fedora-coreos + description: Run Toolbx's commands-options system tests in Fedora CoreOS stable + nodeset: + nodes: + - name: fedora-coreos-stable + label: cloud-fedora-coreos-stable + run: playbooks/system-test-commands-options.yaml + +- job: + name: system-test-fedora-coreos-stable-runtime-environment-arch-fedora + parent: system-test-fedora-coreos + description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora CoreOS stable + nodeset: + nodes: + - name: fedora-coreos-stable + label: cloud-fedora-coreos-stable + run: playbooks/system-test-runtime-environment-arch-fedora.yaml + +- job: + name: system-test-fedora-coreos-stable-runtime-environment-ubuntu + parent: system-test-fedora-coreos + description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora CoreOS stable + nodeset: + nodes: + - name: fedora-coreos-stable + label: cloud-fedora-coreos-stable + run: playbooks/system-test-runtime-environment-ubuntu.yaml + +- job: + name: system-test-fedora-coreos-testing-commands-options + parent: system-test-fedora-coreos + description: Run Toolbx's commands-options system tests in Fedora CoreOS testing + nodeset: + nodes: + - name: fedora-coreos-testing + label: cloud-fedora-coreos-testing + run: playbooks/system-test-commands-options.yaml + +- job: + name: system-test-fedora-coreos-testing-runtime-environment-arch-fedora + parent: system-test-fedora-coreos + description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora CoreOS testing + nodeset: + nodes: + - name: fedora-coreos-testing + label: cloud-fedora-coreos-testing + run: playbooks/system-test-runtime-environment-arch-fedora.yaml + +- job: + name: system-test-fedora-coreos-testing-runtime-environment-ubuntu + parent: system-test-fedora-coreos + description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora CoreOS testing + nodeset: + nodes: + - name: fedora-coreos-testing + label: cloud-fedora-coreos-testing + run: playbooks/system-test-runtime-environment-ubuntu.yaml + - project: periodic: jobs: @@ -197,6 +301,15 @@ - system-test-fedora-42-commands-options - system-test-fedora-42-runtime-environment-arch-fedora - system-test-fedora-42-runtime-environment-ubuntu + - system-test-fedora-coreos-next-commands-options + - system-test-fedora-coreos-next-runtime-environment-arch-fedora + - system-test-fedora-coreos-next-runtime-environment-ubuntu + - system-test-fedora-coreos-stable-commands-options + - system-test-fedora-coreos-stable-runtime-environment-arch-fedora + - system-test-fedora-coreos-stable-runtime-environment-ubuntu + - system-test-fedora-coreos-testing-commands-options + - system-test-fedora-coreos-testing-runtime-environment-arch-fedora + - system-test-fedora-coreos-testing-runtime-environment-ubuntu check: jobs: - unit-test @@ -214,6 +327,15 @@ - system-test-fedora-42-commands-options - system-test-fedora-42-runtime-environment-arch-fedora - system-test-fedora-42-runtime-environment-ubuntu + - system-test-fedora-coreos-next-commands-options + - system-test-fedora-coreos-next-runtime-environment-arch-fedora + - system-test-fedora-coreos-next-runtime-environment-ubuntu + - system-test-fedora-coreos-stable-commands-options + - system-test-fedora-coreos-stable-runtime-environment-arch-fedora + - system-test-fedora-coreos-stable-runtime-environment-ubuntu + - system-test-fedora-coreos-testing-commands-options + - system-test-fedora-coreos-testing-runtime-environment-arch-fedora + - system-test-fedora-coreos-testing-runtime-environment-ubuntu gate: jobs: - unit-test @@ -231,3 +353,12 @@ - system-test-fedora-42-commands-options - system-test-fedora-42-runtime-environment-arch-fedora - system-test-fedora-42-runtime-environment-ubuntu + - system-test-fedora-coreos-next-commands-options + - system-test-fedora-coreos-next-runtime-environment-arch-fedora + - system-test-fedora-coreos-next-runtime-environment-ubuntu + - system-test-fedora-coreos-stable-commands-options + - system-test-fedora-coreos-stable-runtime-environment-arch-fedora + - system-test-fedora-coreos-stable-runtime-environment-ubuntu + - system-test-fedora-coreos-testing-commands-options + - system-test-fedora-coreos-testing-runtime-environment-arch-fedora + - system-test-fedora-coreos-testing-runtime-environment-ubuntu diff --git a/playbooks/dependencies-common.yaml b/playbooks/dependencies-common.yaml new file mode 100644 index 000000000..3d7f135d4 --- /dev/null +++ b/playbooks/dependencies-common.yaml @@ -0,0 +1,58 @@ +# +# Copyright © 2026 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +- name: Ensure subordinate ID ranges exist for zuul-worker + become: yes + lineinfile: + create: true + path: "{{ item.file }}" + regexp: "^zuul-worker:" + line: "zuul-worker:524288:65536" + with_items: + - { file: /etc/subgid } + - { file: /etc/subuid } + +- name: Force Podman to refresh user namespace mappings + become: yes + command: podman system migrate + ignore_errors: true + +- name: Download Go modules + command: go mod download -x + args: + chdir: '{{ zuul.project.src_dir }}/src' + +- name: Initialize Git submodules + command: git submodule init + args: + chdir: '{{ zuul.project.src_dir }}' + +- name: Update Git submodules + command: git submodule update + args: + chdir: '{{ zuul.project.src_dir }}' + +- name: Show OS release information + command: cat /etc/os-release + +- name: Check versions of crucial packages + command: rpm -qa ShellCheck bash bash-completion bats codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo + +- name: Show podman versions + command: podman version + +- name: Show podman debug information + command: podman info --debug diff --git a/playbooks/dependencies-fedora-coreos.yaml b/playbooks/dependencies-fedora-coreos.yaml new file mode 100644 index 000000000..33edb522d --- /dev/null +++ b/playbooks/dependencies-fedora-coreos.yaml @@ -0,0 +1,53 @@ +# +# Copyright © 2026 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +- name: Sync glibc to repo version for gcc/glibc-devel compatibility + become: yes + command: >- + rpm-ostree override replace --experimental --from repo=updates + glibc glibc-common glibc-minimal-langpack glibc-gconv-extra + ignore_errors: yes + +- name: Sync shadow-utils to repo version for shadow-utils-subid-devel compatibility + become: yes + command: >- + rpm-ostree override replace --experimental --from repo=updates + shadow-utils + ignore_errors: yes + +- name: Apply base package overrides + become: yes + command: rpm-ostree apply-live --allow-replacement + ignore_errors: yes + +- name: Install RPM packages via rpm-ostree + become: yes + command: >- + rpm-ostree install -y --apply-live --idempotent --allow-inactive + ShellCheck + bats + codespell + fish + gcc + golang + golang-github-cpuguy83-md2man + httpd-tools + meson + ninja-build + shadow-utils-subid-devel + udisks2 + +- include_tasks: dependencies-common.yaml diff --git a/playbooks/dependencies-fedora.yaml b/playbooks/dependencies-fedora.yaml index 069c87cfd..eebb2e887 100644 --- a/playbooks/dependencies-fedora.yaml +++ b/playbooks/dependencies-fedora.yaml @@ -39,22 +39,6 @@ - udisks2 use: "{{ 'dnf' if zuul.attempts > 1 else 'auto' }}" -- name: Ensure subordinate ID ranges exist for zuul-worker - become: true - lineinfile: - create: true - path: "{{ item.file }}" - regexp: "^zuul-worker:" - line: "zuul-worker:524288:65536" - with_items: - - { file: /etc/subgid } - - { file: /etc/subuid } - -- name: Force Podman to refresh user namespace mappings - become: true - command: podman system migrate - ignore_errors: true - - name: Ensure that 'p11-kit server' is absent become: yes package: @@ -64,26 +48,4 @@ update_cache: "{{ true if zuul.attempts > 1 else false }}" use: "{{ 'dnf' if zuul.attempts > 1 else 'auto' }}" -- name: Download Go modules - command: go mod download -x - args: - chdir: '{{ zuul.project.src_dir }}/src' - -- name: Initialize Git submodules - command: git submodule init - args: - chdir: '{{ zuul.project.src_dir }}' - -- name: Update Git submodules - command: git submodule update - args: - chdir: '{{ zuul.project.src_dir }}' - -- name: Check versions of crucial packages - command: rpm -qa ShellCheck bash bash-completion bats codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo - -- name: Show podman versions - command: podman version - -- name: Show podman debug information - command: podman info --debug +- include_tasks: dependencies-common.yaml diff --git a/playbooks/setup-env.yaml b/playbooks/setup-env.yaml index b9953b508..053f0a34a 100644 --- a/playbooks/setup-env.yaml +++ b/playbooks/setup-env.yaml @@ -20,6 +20,6 @@ - include_tasks: "{{ dependencies_playbook | default('dependencies-fedora.yaml') }}" - name: Set up build directory - command: meson setup builddir + command: meson setup {{ meson_setup_args | default('') }} builddir args: chdir: '{{ zuul.project.src_dir }}' From 5041ecfb48c41c4cbe18a10bc4855e7d11bc5ffe Mon Sep 17 00:00:00 2001 From: Rolv Apneseth Date: Wed, 17 Jun 2026 15:36:58 +0100 Subject: [PATCH 3/3] .zuul: Parameterise system test job definitions Assisted-by: Claude (claude-opus-4-6) Signed-off-by: Rolv Apneseth --- .zuul.yaml | 51 +++++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index 51c3ef2c7..fa369deec 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -50,143 +50,143 @@ pre-run: playbooks/setup-env.yaml run: playbooks/unit-test.yaml +- job: + name: system-test-fedora + abstract: true + timeout: 6300 + pre-run: playbooks/setup-env.yaml + +- job: + name: system-test-fedora-rawhide + abstract: true + parent: system-test-fedora + timeout: 7200 + - job: name: system-test-fedora-rawhide-commands-options + parent: system-test-fedora-rawhide description: Run Toolbx's commands-options system tests in Fedora Rawhide - timeout: 7200 nodeset: nodes: - name: fedora-rawhide label: cloud-fedora-rawhide - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-commands-options.yaml - job: name: system-test-fedora-rawhide-runtime-environment-arch-fedora + parent: system-test-fedora-rawhide description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora Rawhide - timeout: 7200 nodeset: nodes: - name: fedora-rawhide label: cloud-fedora-rawhide - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-arch-fedora.yaml - job: name: system-test-fedora-rawhide-runtime-environment-ubuntu + parent: system-test-fedora-rawhide description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora Rawhide - timeout: 7200 nodeset: nodes: - name: fedora-rawhide label: cloud-fedora-rawhide - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-ubuntu.yaml - job: name: system-test-fedora-44-commands-options + parent: system-test-fedora description: Run Toolbx's commands-options system tests in Fedora 44 - timeout: 6300 nodeset: nodes: - name: fedora-44 label: cloud-fedora-44 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-commands-options.yaml - job: name: system-test-fedora-44-runtime-environment-arch-fedora + parent: system-test-fedora description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora 44 - timeout: 6300 nodeset: nodes: - name: fedora-44 label: cloud-fedora-44 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-arch-fedora.yaml - job: name: system-test-fedora-44-runtime-environment-ubuntu + parent: system-test-fedora description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora 44 - timeout: 6300 nodeset: nodes: - name: fedora-44 label: cloud-fedora-44 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-ubuntu.yaml - job: name: system-test-fedora-43-commands-options + parent: system-test-fedora description: Run Toolbx's commands-options system tests in Fedora 43 - timeout: 6300 nodeset: nodes: - name: fedora-43 label: cloud-fedora-43 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-commands-options.yaml - job: name: system-test-fedora-43-runtime-environment-arch-fedora + parent: system-test-fedora description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora 43 - timeout: 6300 nodeset: nodes: - name: fedora-43 label: cloud-fedora-43 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-arch-fedora.yaml - job: name: system-test-fedora-43-runtime-environment-ubuntu + parent: system-test-fedora description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora 43 - timeout: 6300 nodeset: nodes: - name: fedora-43 label: cloud-fedora-43 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-ubuntu.yaml - job: name: system-test-fedora-42-commands-options + parent: system-test-fedora description: Run Toolbx's commands-options system tests in Fedora 42 - timeout: 6300 nodeset: nodes: - name: fedora-42 label: cloud-fedora-42 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-commands-options.yaml - job: name: system-test-fedora-42-runtime-environment-arch-fedora + parent: system-test-fedora description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora 42 - timeout: 6300 nodeset: nodes: - name: fedora-42 label: cloud-fedora-42 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-arch-fedora.yaml - job: name: system-test-fedora-42-runtime-environment-ubuntu + parent: system-test-fedora description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora 42 - timeout: 6300 nodeset: nodes: - name: fedora-42 label: cloud-fedora-42 - pre-run: playbooks/setup-env.yaml run: playbooks/system-test-runtime-environment-ubuntu.yaml - job: name: system-test-fedora-coreos abstract: true + parent: system-test-fedora voting: false - timeout: 6300 vars: dependencies_playbook: dependencies-fedora-coreos.yaml # Redirect installs from read-only /usr to writable /usr/local @@ -194,7 +194,6 @@ -Dfish_completions_dir=/usr/local/share/fish/vendor_completions.d -Dprofile_dir=/usr/local/share/profile.d -Dtmpfiles_dir=/usr/local/lib/tmpfiles.d - pre-run: playbooks/setup-env.yaml - job: name: system-test-fedora-coreos-next-commands-options