From 040f6319f59372858ac70ae9b43b08b18060fbfd Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Mon, 16 Jun 2025 15:35:27 -0400 Subject: [PATCH 1/3] Drop `fedora-` prefix from canonical manifests It's confusing right now how the manifest names differ across fedora-bootc, centos-bootc and rhel-bootc. Both rhel-bootc and centos-bootc only use "bare" names like `minimal`, and `standard`, while fedora-bootc prefixes everything with `fedora-`. For FCOS/SCOS/RHCOS, it would be beneficial to maintain the same naming across all of those. Let's just match the naming here to the "bare" version. But add symlinks so that we don't break the old names (but note that being symlinks, they will no longer show up in `bootc-base-imagectl list`). --- .tekton/fedora-bootc-42-iot-pull-request.yaml | 6 +++--- .tekton/fedora-bootc-42-iot-push.yaml | 6 +++--- .tekton/fedora-bootc-42-minimal-plus-pull-request.yaml | 2 +- .tekton/fedora-bootc-42-minimal-plus-push.yaml | 2 +- .tekton/fedora-bootc-42-minimal-pull-request.yaml | 2 +- .tekton/fedora-bootc-42-minimal-push.yaml | 2 +- .tekton/fedora-bootc-42-standard-pull-request.yaml | 2 +- .tekton/fedora-bootc-42-standard-push.yaml | 2 +- .tekton/fedora-bootc-rawhide-iot-pull-request.yaml | 6 +++--- .tekton/fedora-bootc-rawhide-iot-push.yaml | 6 +++--- .../fedora-bootc-rawhide-minimal-plus-pull-request.yaml | 2 +- .tekton/fedora-bootc-rawhide-minimal-plus-push.yaml | 2 +- .tekton/fedora-bootc-rawhide-minimal-pull-request.yaml | 2 +- .tekton/fedora-bootc-rawhide-minimal-push.yaml | 2 +- .tekton/fedora-bootc-rawhide-standard-pull-request.yaml | 2 +- .tekton/fedora-bootc-rawhide-standard-push.yaml | 2 +- fedora-iot.yaml | 5 +---- fedora-minimal-plus.yaml | 4 +--- fedora-minimal.yaml | 4 +--- fedora-standard.yaml | 8 +------- install-manifests | 4 +++- iot.yaml | 4 ++++ minimal-plus.yaml | 3 +++ minimal.yaml | 3 +++ standard.yaml | 7 +++++++ 25 files changed, 48 insertions(+), 42 deletions(-) mode change 100644 => 120000 fedora-iot.yaml mode change 100644 => 120000 fedora-minimal-plus.yaml mode change 100644 => 120000 fedora-minimal.yaml mode change 100644 => 120000 fedora-standard.yaml create mode 100644 iot.yaml create mode 100644 minimal-plus.yaml create mode 100644 minimal.yaml create mode 100644 standard.yaml diff --git a/.tekton/fedora-bootc-42-iot-pull-request.yaml b/.tekton/fedora-bootc-42-iot-pull-request.yaml index 8ed6d8f..bc523bc 100644 --- a/.tekton/fedora-bootc-42-iot-pull-request.yaml +++ b/.tekton/fedora-bootc-42-iot-pull-request.yaml @@ -9,9 +9,9 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./fedora-minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() - || "./fedora-minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || + == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() + || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-42-iot-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-iot-push.yaml b/.tekton/fedora-bootc-42-iot-push.yaml index 92aa5c6..8884b05 100644 --- a/.tekton/fedora-bootc-42-iot-push.yaml +++ b/.tekton/fedora-bootc-42-iot-push.yaml @@ -8,9 +8,9 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./fedora-minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() - || "./fedora-minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || + == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() + || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-42-iot-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml b/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml index 8334800..5f96be7 100644 --- a/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml +++ b/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-plus-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-minimal-plus-push.yaml b/.tekton/fedora-bootc-42-minimal-plus-push.yaml index 4d08d1a..c9c9b8b 100644 --- a/.tekton/fedora-bootc-42-minimal-plus-push.yaml +++ b/.tekton/fedora-bootc-42-minimal-plus-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-plus-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-minimal-pull-request.yaml b/.tekton/fedora-bootc-42-minimal-pull-request.yaml index bad3391..5bdd22b 100644 --- a/.tekton/fedora-bootc-42-minimal-pull-request.yaml +++ b/.tekton/fedora-bootc-42-minimal-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-minimal-push.yaml b/.tekton/fedora-bootc-42-minimal-push.yaml index 8156db8..4722843 100644 --- a/.tekton/fedora-bootc-42-minimal-push.yaml +++ b/.tekton/fedora-bootc-42-minimal-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-standard-pull-request.yaml b/.tekton/fedora-bootc-42-standard-pull-request.yaml index 460c5e8..e542736 100644 --- a/.tekton/fedora-bootc-42-standard-pull-request.yaml +++ b/.tekton/fedora-bootc-42-standard-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./standard/***".pathChanged() || ".tekton/fedora-bootc-42-standard-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-standard-push.yaml b/.tekton/fedora-bootc-42-standard-push.yaml index bb8f906..7389e50 100644 --- a/.tekton/fedora-bootc-42-standard-push.yaml +++ b/.tekton/fedora-bootc-42-standard-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./standard/***".pathChanged() || ".tekton/fedora-bootc-42-standard-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml b/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml index d9a5868..90df2d5 100644 --- a/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml @@ -9,9 +9,9 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./fedora-minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() - || "./fedora-minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || + == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() + || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-rawhide-iot-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-iot-push.yaml b/.tekton/fedora-bootc-rawhide-iot-push.yaml index e47d9b5..80a2008 100644 --- a/.tekton/fedora-bootc-rawhide-iot-push.yaml +++ b/.tekton/fedora-bootc-rawhide-iot-push.yaml @@ -8,9 +8,9 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./fedora-minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() - || "./fedora-minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || + == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() + || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-rawhide-iot-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml b/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml index 0c1532b..965ee86 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml b/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml index 43c33b0..6dfb20c 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-plus-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-minimal-pull-request.yaml b/.tekton/fedora-bootc-rawhide-minimal-pull-request.yaml index dc8116c..72eee9f 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-minimal-push.yaml b/.tekton/fedora-bootc-rawhide-minimal-push.yaml index e85bdb5..bfe7734 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-push.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-standard-pull-request.yaml b/.tekton/fedora-bootc-rawhide-standard-pull-request.yaml index ef2ef09..1e5b00b 100644 --- a/.tekton/fedora-bootc-rawhide-standard-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-standard-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./fedora-standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./standard/***".pathChanged() || ".tekton/fedora-bootc-rawhide-standard-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-standard-push.yaml b/.tekton/fedora-bootc-rawhide-standard-push.yaml index 245a6ec..d41a800 100644 --- a/.tekton/fedora-bootc-rawhide-standard-push.yaml +++ b/.tekton/fedora-bootc-rawhide-standard-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./fedora-standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./standard.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./standard/***".pathChanged() || ".tekton/fedora-bootc-rawhide-standard-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/fedora-iot.yaml b/fedora-iot.yaml deleted file mode 100644 index 27aabce..0000000 --- a/fedora-iot.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: - - iot/manifest.yaml - - fedora-minimal-plus.yaml - diff --git a/fedora-iot.yaml b/fedora-iot.yaml new file mode 120000 index 0000000..015e654 --- /dev/null +++ b/fedora-iot.yaml @@ -0,0 +1 @@ +iot.yaml \ No newline at end of file diff --git a/fedora-minimal-plus.yaml b/fedora-minimal-plus.yaml deleted file mode 100644 index a987b38..0000000 --- a/fedora-minimal-plus.yaml +++ /dev/null @@ -1,3 +0,0 @@ -include: - - fedora-includes/generic.yaml - - minimal-plus/manifest.yaml diff --git a/fedora-minimal-plus.yaml b/fedora-minimal-plus.yaml new file mode 120000 index 0000000..15e1815 --- /dev/null +++ b/fedora-minimal-plus.yaml @@ -0,0 +1 @@ +minimal-plus.yaml \ No newline at end of file diff --git a/fedora-minimal.yaml b/fedora-minimal.yaml deleted file mode 100644 index a6b3b23..0000000 --- a/fedora-minimal.yaml +++ /dev/null @@ -1,3 +0,0 @@ -include: - - fedora-includes/generic.yaml - - minimal/manifest.yaml diff --git a/fedora-minimal.yaml b/fedora-minimal.yaml new file mode 120000 index 0000000..57d7672 --- /dev/null +++ b/fedora-minimal.yaml @@ -0,0 +1 @@ +minimal.yaml \ No newline at end of file diff --git a/fedora-standard.yaml b/fedora-standard.yaml deleted file mode 100644 index 4dd7d72..0000000 --- a/fedora-standard.yaml +++ /dev/null @@ -1,7 +0,0 @@ -include: - - fedora-includes/generic.yaml - - standard/manifest.yaml - -packages: - # Make Ansible "package" builtin work by default - - python3-libdnf5 diff --git a/fedora-standard.yaml b/fedora-standard.yaml new file mode 120000 index 0000000..55bfa44 --- /dev/null +++ b/fedora-standard.yaml @@ -0,0 +1 @@ +standard.yaml \ No newline at end of file diff --git a/install-manifests b/install-manifests index 93d878c..88e75d7 100755 --- a/install-manifests +++ b/install-manifests @@ -7,7 +7,9 @@ mkdir -p "$manifestdir/" for image in minimal standard minimal-plus iot; do # Embed the generic defaults cp -a $image $manifestdir/ - # And the Fedora-specific tweaks + # And the top-level Fedora-specific manifests + cp -a $image.yaml $manifestdir/ + # And the legacy `fedora-` prefixed names cp -a fedora-$image.yaml $manifestdir/ done # Set the default diff --git a/iot.yaml b/iot.yaml new file mode 100644 index 0000000..27aabce --- /dev/null +++ b/iot.yaml @@ -0,0 +1,4 @@ +include: + - iot/manifest.yaml + - fedora-minimal-plus.yaml + diff --git a/minimal-plus.yaml b/minimal-plus.yaml new file mode 100644 index 0000000..a987b38 --- /dev/null +++ b/minimal-plus.yaml @@ -0,0 +1,3 @@ +include: + - fedora-includes/generic.yaml + - minimal-plus/manifest.yaml diff --git a/minimal.yaml b/minimal.yaml new file mode 100644 index 0000000..a6b3b23 --- /dev/null +++ b/minimal.yaml @@ -0,0 +1,3 @@ +include: + - fedora-includes/generic.yaml + - minimal/manifest.yaml diff --git a/standard.yaml b/standard.yaml new file mode 100644 index 0000000..4dd7d72 --- /dev/null +++ b/standard.yaml @@ -0,0 +1,7 @@ +include: + - fedora-includes/generic.yaml + - standard/manifest.yaml + +packages: + # Make Ansible "package" builtin work by default + - python3-libdnf5 From c2ff52a7cf18e7efc510c94f56074fbd655bc609 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Tue, 17 Jun 2025 14:57:25 -0400 Subject: [PATCH 2/3] bootc-base-imagectl: simplify manifest path logic The `if os.path.isdir(args.manifest)` bit dates from the introduction of this script, but doesn't really work. I suspect the intent here was to abstract over some manifests being top-level YAML files and others being directories). Except that: 1. The script didn't actually check the right path. It's checking `$PWD/{args.manifest}` instead of `$MANIFESTDIR/{args.manifest}`. 2. `list` doesn't have the equivalent logic to look for `manifest.yaml` files in subdirectories. 3. Nowadays, there is both a e.g. `standard.yaml` _and_ a `standard/manifest.yaml` directory. The established semantic there AIUI is that the top-level manifests are opinionated for a specific OS (Fedora/CentOS/RHEL), whereas the directories are shared across all of those. So let's just nuke support for the directory path. --- bootc-base-imagectl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bootc-base-imagectl b/bootc-base-imagectl index fbe879a..f2dffae 100755 --- a/bootc-base-imagectl +++ b/bootc-base-imagectl @@ -17,10 +17,7 @@ def run_build_rootfs(args): Regenerates a base image using a build configuration. """ target = args.target - if os.path.isdir(args.manifest): - manifest_path = os.path.join(f'/{MANIFESTDIR}', args.manifest, 'manifest.yaml') - else: - manifest_path = f'/{MANIFESTDIR}/{args.manifest}.yaml' + manifest_path = f'/{MANIFESTDIR}/{args.manifest}.yaml' rpmostree_argv = ['rpm-ostree', 'compose', 'rootfs'] From 87eae9910eb7f5118feed6416ba1582c10d63e68 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Tue, 17 Jun 2025 15:07:23 -0400 Subject: [PATCH 3/3] bootc-base-imagectl: support hidden manifests, hide minimal-plus We don't currently want the minimal-plus target to be user-facing. It's intended only for other Fedora variants. Let's support "hidden" manifests by having their names end in `.hidden.yaml`. Then, make `minimal-plus` hidden. I considered instead having them start with `.` to match well-established semantics, but I don't like either that this hides them from an `ls` in the git repo (or even with `-a`, puts them higher up whereas I want it to be close to `minimal.yaml`). I also considered leveraging the existing symlink hiding semantics, but it also felt awkward to rename a file and add a symlink to it just for the purpose of hiding it. --- .tekton/fedora-bootc-42-iot-pull-request.yaml | 2 +- .tekton/fedora-bootc-42-iot-push.yaml | 2 +- .tekton/fedora-bootc-42-minimal-plus-pull-request.yaml | 2 +- .tekton/fedora-bootc-42-minimal-plus-push.yaml | 2 +- .tekton/fedora-bootc-rawhide-iot-pull-request.yaml | 2 +- .tekton/fedora-bootc-rawhide-iot-push.yaml | 2 +- .../fedora-bootc-rawhide-minimal-plus-pull-request.yaml | 2 +- .tekton/fedora-bootc-rawhide-minimal-plus-push.yaml | 2 +- bootc-base-imagectl | 9 +++++++-- fedora-minimal-plus.yaml | 2 +- install-manifests | 6 +++++- minimal-plus.yaml => minimal-plus.hidden.yaml | 0 12 files changed, 21 insertions(+), 12 deletions(-) rename minimal-plus.yaml => minimal-plus.hidden.yaml (100%) diff --git a/.tekton/fedora-bootc-42-iot-pull-request.yaml b/.tekton/fedora-bootc-42-iot-pull-request.yaml index bc523bc..866fe38 100644 --- a/.tekton/fedora-bootc-42-iot-pull-request.yaml +++ b/.tekton/fedora-bootc-42-iot-pull-request.yaml @@ -10,7 +10,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal-plus.hidden.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-42-iot-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) diff --git a/.tekton/fedora-bootc-42-iot-push.yaml b/.tekton/fedora-bootc-42-iot-push.yaml index 8884b05..20e129d 100644 --- a/.tekton/fedora-bootc-42-iot-push.yaml +++ b/.tekton/fedora-bootc-42-iot-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal-plus.hidden.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-42-iot-push.yaml".pathChanged() || "Containerfile".pathChanged() ) diff --git a/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml b/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml index 5f96be7..1071297 100644 --- a/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml +++ b/.tekton/fedora-bootc-42-minimal-plus-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.hidden.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-plus-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-42-minimal-plus-push.yaml b/.tekton/fedora-bootc-42-minimal-plus-push.yaml index c9c9b8b..5d46709 100644 --- a/.tekton/fedora-bootc-42-minimal-plus-push.yaml +++ b/.tekton/fedora-bootc-42-minimal-plus-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.hidden.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-42-minimal-plus-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml b/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml index 90df2d5..6fdd607 100644 --- a/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-iot-pull-request.yaml @@ -10,7 +10,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal-plus.hidden.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-rawhide-iot-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) diff --git a/.tekton/fedora-bootc-rawhide-iot-push.yaml b/.tekton/fedora-bootc-rawhide-iot-push.yaml index 80a2008..cc07c7b 100644 --- a/.tekton/fedora-bootc-rawhide-iot-push.yaml +++ b/.tekton/fedora-bootc-rawhide-iot-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && ( "./iot.yaml".pathChanged() || "./iot/***".pathChanged() - || "./minimal-plus.yaml".pathChanged() || "./minimal-plus/***".pathChanged() + || "./minimal-plus.hidden.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || "./minimal.yaml".pathChanged() || "./minimal/***".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || ".tekton/fedora-bootc-rawhide-iot-push.yaml".pathChanged() || "Containerfile".pathChanged() ) diff --git a/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml b/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml index 965ee86..9db25d1 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.hidden.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-plus-pull-request.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml b/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml index 6dfb20c..403e24c 100644 --- a/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml +++ b/.tekton/fedora-bootc-rawhide-minimal-plus-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" && ( "./minimal-plus.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() + == "main" && ( "./minimal-plus.hidden.yaml".pathChanged() || "./fedora-includes/generic.yaml".pathChanged() || "./minimal-plus/***".pathChanged() || ".tekton/fedora-bootc-rawhide-minimal-plus-push.yaml".pathChanged() || "Containerfile".pathChanged() ) creationTimestamp: null diff --git a/bootc-base-imagectl b/bootc-base-imagectl index f2dffae..4cdcc1e 100755 --- a/bootc-base-imagectl +++ b/bootc-base-imagectl @@ -17,7 +17,12 @@ def run_build_rootfs(args): Regenerates a base image using a build configuration. """ target = args.target - manifest_path = f'/{MANIFESTDIR}/{args.manifest}.yaml' + for fn in [f'{args.manifest}.yaml', f'{args.manifest}.hidden.yaml']: + manifest_path = f'/{MANIFESTDIR}/{fn}' + if os.path.exists(manifest_path): + break + else: + raise Exception(f"manifest not found: {args.manifest}") rpmostree_argv = ['rpm-ostree', 'compose', 'rootfs'] @@ -116,7 +121,7 @@ def run_list(args): d = '/' + MANIFESTDIR for ent in sorted(os.listdir(d)): name, ext = os.path.splitext(ent) - if ext != '.yaml': + if ext != '.yaml' or name.endswith('.hidden'): continue fullpath = os.path.join(d, ent) if os.path.islink(fullpath): diff --git a/fedora-minimal-plus.yaml b/fedora-minimal-plus.yaml index 15e1815..a1f9a23 120000 --- a/fedora-minimal-plus.yaml +++ b/fedora-minimal-plus.yaml @@ -1 +1 @@ -minimal-plus.yaml \ No newline at end of file +minimal-plus.hidden.yaml \ No newline at end of file diff --git a/install-manifests b/install-manifests index 88e75d7..f36a442 100755 --- a/install-manifests +++ b/install-manifests @@ -8,7 +8,11 @@ for image in minimal standard minimal-plus iot; do # Embed the generic defaults cp -a $image $manifestdir/ # And the top-level Fedora-specific manifests - cp -a $image.yaml $manifestdir/ + if [ -f $image.hidden.yaml ]; then + cp -a $image.hidden.yaml $manifestdir/ + else + cp -a $image.yaml $manifestdir/ + fi # And the legacy `fedora-` prefixed names cp -a fedora-$image.yaml $manifestdir/ done diff --git a/minimal-plus.yaml b/minimal-plus.hidden.yaml similarity index 100% rename from minimal-plus.yaml rename to minimal-plus.hidden.yaml