From 28f7cf0cf656e6be60018ae88c848841ed96bfbd Mon Sep 17 00:00:00 2001 From: Miroslav Vadkerti Date: Wed, 12 Mar 2025 15:29:38 +0100 Subject: Split tmt plans into separate zuul jobs This should improve the experience by having separate clickable links for each test matrix item and see the pass/fail more early. Also make Testing Farm scale better as it uses separate TF requests for testing. Signed-off-by: Miroslav Vadkerti --- .zuul.yaml | 409 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- .zuul.yaml.j2 | 26 ++++ Makefile | 16 +++ README.md | 8 ++ 4 files changed, 454 insertions(+), 5 deletions(-) create mode 100644 .zuul.yaml.j2 create mode 100755 Makefile diff --git a/.zuul.yaml b/.zuul.yaml index 1a0971b..2661956 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,20 +1,382 @@ --- + - job: - name: build-images-x86_64 + name: build-images-x86_64/asahi/build-fex-rootfs parent: tmt-test vars: tmt_url: "https://pagure.io/{{ zuul.project.name }}" tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/asahi/build-fex-rootfs" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-aws + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-aws" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-azure + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-azure" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-gcp + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-gcp" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-uefi-uki + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-uefi-uki" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic-init + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-init" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic-minimal + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-minimal" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/toolbox/build-toolbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/toolbox/build-toolbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/kde/build-desktop-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/kde/build-desktop-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/workstation/build-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/workstation/build-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/server/guest/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/guest/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/server/host/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/host/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/vagrant/base/build-libvirt + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-libvirt" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/vagrant/base/build-virtualbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-virtualbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/wsl/build + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/wsl/build" distro: fedora-rawhide compose: Fedora-latest tf_arch: x86_64 - - job: - name: build-images-aarch64 + name: build-images-aarch64/asahi/build-fex-rootfs parent: tmt-test vars: tmt_url: "https://pagure.io/{{ zuul.project.name }}" tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/asahi/build-fex-rootfs" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-aws + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-aws" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-azure + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-azure" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-gcp + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-gcp" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-uefi-uki + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-uefi-uki" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic-init + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-init" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic-minimal + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-minimal" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/toolbox/build-toolbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/toolbox/build-toolbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/kde/build-desktop-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/kde/build-desktop-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/workstation/build-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/workstation/build-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/server/guest/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/guest/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/server/host/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/host/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/vagrant/base/build-libvirt + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-libvirt" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/vagrant/base/build-virtualbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-virtualbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/wsl/build + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/wsl/build" distro: fedora-rawhide compose: Fedora-latest tf_arch: aarch64 @@ -22,5 +384,42 @@ - project: check: jobs: - - build-images-x86_64 - - build-images-aarch64 + + - build-images-x86_64/asahi/build-fex-rootfs + - build-images-x86_64/cloud/base/build-aws + - build-images-x86_64/cloud/base/build-azure + - build-images-x86_64/cloud/base/build-gcp + - build-images-x86_64/cloud/base/build-generic + - build-images-x86_64/cloud/base/build-uefi-uki + - build-images-x86_64/container/base/build-generic + - build-images-x86_64/container/base/build-generic-init + - build-images-x86_64/container/base/build-generic-minimal + - build-images-x86_64/container/toolbox/build-toolbox + - build-images-x86_64/desktop/kde/build-desktop-disk + - build-images-x86_64/desktop/kde/build-desktop-live + - build-images-x86_64/desktop/workstation/build-disk + - build-images-x86_64/desktop/workstation/build-live + - build-images-x86_64/server/guest/build-generic + - build-images-x86_64/server/host/build-generic + - build-images-x86_64/vagrant/base/build-libvirt + - build-images-x86_64/vagrant/base/build-virtualbox + - build-images-x86_64/wsl/build + - build-images-aarch64/asahi/build-fex-rootfs + - build-images-aarch64/cloud/base/build-aws + - build-images-aarch64/cloud/base/build-azure + - build-images-aarch64/cloud/base/build-gcp + - build-images-aarch64/cloud/base/build-generic + - build-images-aarch64/cloud/base/build-uefi-uki + - build-images-aarch64/container/base/build-generic + - build-images-aarch64/container/base/build-generic-init + - build-images-aarch64/container/base/build-generic-minimal + - build-images-aarch64/container/toolbox/build-toolbox + - build-images-aarch64/desktop/kde/build-desktop-disk + - build-images-aarch64/desktop/kde/build-desktop-live + - build-images-aarch64/desktop/workstation/build-disk + - build-images-aarch64/desktop/workstation/build-live + - build-images-aarch64/server/guest/build-generic + - build-images-aarch64/server/host/build-generic + - build-images-aarch64/vagrant/base/build-libvirt + - build-images-aarch64/vagrant/base/build-virtualbox + - build-images-aarch64/wsl/build diff --git a/.zuul.yaml.j2 b/.zuul.yaml.j2 new file mode 100644 index 0000000..3e7b118 --- /dev/null +++ b/.zuul.yaml.j2 @@ -0,0 +1,26 @@ +--- +{% set arches = arches.split() -%} +{% set plans = plans.split() -%} +{% for arch in arches -%} + {% for plan in plans %} +- job: + name: build-images-{{ arch }}{{ plan | replace("/tmt/plans", "") }} + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ '{{' }} zuul.project.name {{ '}}' }}" + tmt_ref: "{{ '{{' }} zuul.ref {{ '}}' }}" + tmt_plan: "{{ plan }}" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: {{ arch }} + {%- endfor %} +{%- endfor %} + +- project: + check: + jobs: +{% for arch in arches -%} + {% for plan in plans %} + - build-images-{{ arch }}{{ plan | replace("/tmt/plans", "") }} + {%- endfor %} +{%- endfor %} diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..df63ab8 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +.DEFAULT_GOAL := help + +# https://www.gnu.org/software/make/manual/html_node/Force-Targets.html#Force-Targets +.FORCE: + +# List of architectures to be tested +ARCHES = x86_64 aarch64 + +generate-zuul-config: .FORCE ## Generate zuul configuration from list of tmt plans + jinja2 -D arches="$(ARCHES)" -D plans="$$(tmt plan ls | tr '\n' ' ')" .zuul.yaml.j2 -o .zuul.yaml + +# See https://www.thapaliya.com/en/writings/well-documented-makefiles/ for details. +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1)) + +help: .FORCE ## Show this help + @awk 'BEGIN {FS = ":.*##"; printf "$(info $(PRELUDE))"} /^[a-zA-Z_/-]+:.*?##/ { printf " \033[36m%-35s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(call reverse, $(MAKEFILE_LIST)) diff --git a/README.md b/README.md index 49a8260..777bb78 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # fedora-kiwi-descriptions This project is used to manage the Fedora KIWI image descriptions used in composing Fedora release images. @@ -30,6 +31,13 @@ Set up your development environment and run the image build (substitute `