Switch to building and shipping images via Konflux
Currently we build production images by going pungi -> rpm-ostree -> https://pagure.io/cloud-image-uploader/, and there is no gating CI in that process. Switching to Konflux will give us a container-native flow and ability to more tightly integrate CI gating, and help align us with existing CentOS Stream and RHEL. ## References - https://lists.centos.org/hyperkitty/list/devel@lists.centos.org/thread/64IUY3DVQ74WFBZ5EJ54TZBIAA4VEKFA/ ## Status GitOps repo for Konflux CRs: https://gitlab.com/fedora/infrastructure/konflux/tenants-config/-/merge_requests/26 Custom build/release pipelines used in Konflux (https://gitlab.com/fedora/bootc/tekton-catalog) are built and published to: - https://quay.io/bootc-devel/tekton-catalog/pipeline-buildah-build-bootc-multi-platform-oci-ta - https://quay.io/bootc-devel/tekton-catalog/pipeline-push-to-external-registry Renovate configuration for automatic updates: - [x] Composes: https://gitlab.com/fedora/bootc/compose-images/-/blob/main/renovate.json - [x] Minimal, Minimal Plus, Standard and IoT: https://gitlab.com/fedora/bootc/base-images/-/blob/main/renovate.json MRs enabling builds: - [x] Compose image MR: https://gitlab.com/fedora/bootc/compose-images/-/merge_requests/1 - [x] Minimal image MR: https://gitlab.com/fedora/bootc/base-images/-/merge_requests/156 - [x] Minimal Plus image MR: https://gitlab.com/fedora/bootc/base-images/-/merge_requests/157 - [x] Standard Image MR: https://gitlab.com/fedora/bootc/base-images/-/merge_requests/70 - [x] IoT Image MR: https://gitlab.com/fedora/bootc/base-images/-/merge_requests/176 - [x] Enable `ppc64le` and `s390x` builds: https://gitlab.com/fedora/bootc/base-images/-/merge_requests/292 Initial fedora rawhide images have been successfully built with konflux and published to: - [x] Compose image: https://quay.io/bootc-devel/fedora-bootc-rawhide-compose - [x] Minimal image: https://quay.io/bootc-devel/fedora-bootc-rawhide-minimal - [x] Minimal Plus image: https://quay.io/bootc-devel/fedora-bootc-rawhide-minimal-plus - [x] Standard Image: https://quay.io/bootc-devel/fedora-bootc-rawhide-standard - [x] IoT Image: https://quay.io/bootc-devel/fedora-bootc-rawhide-iot Initial fedora 43 images have been successfully built with konflux and published to: - [x] Compose image: https://quay.io/bootc-devel/fedora-bootc-43-compose - [x] Minimal image: https://quay.io/bootc-devel/fedora-bootc-43-minimal - [x] Minimal Plus image:https://quay.io/bootc-devel/fedora-bootc-43-minimal-plus - [x] Standard Image: https://quay.io/bootc-devel/fedora-bootc-43-standard - [x] IoT Image: https://quay.io/bootc-devel/fedora-bootc-43-iot Initial fedora 42 images have been successfully built with konflux and published to: - [x] Compose image: https://quay.io/bootc-devel/fedora-bootc-42-compose - [x] Minimal image: https://quay.io/bootc-devel/fedora-bootc-42-minimal - [x] Minimal Plus image:https://quay.io/bootc-devel/fedora-bootc-42-minimal-plus - [x] Standard Image: https://quay.io/bootc-devel/fedora-bootc-42-standard - [x] IoT Image: https://quay.io/bootc-devel/fedora-bootc-42-iot Initial fedora 41 images have been successfully built with konflux and published to: - [x] Compose image: https://quay.io/bootc-devel/fedora-bootc-41-compose - [ ] Minimal image: https://quay.io/bootc-devel/fedora-bootc-41-minimal - [ ] Minimal Plus image:https://quay.io/bootc-devel/fedora-bootc-41-minimal-plus - [ ] Standard Image: https://quay.io/bootc-devel/fedora-bootc-41-standard - [ ] IoT Image: https://quay.io/bootc-devel/fedora-bootc-41-iot ## Larger tasks ### Switch to having pungi trigger this build Basically the main fedora compose process runs pungi. In this flow, pungi would build and push "repos" container image `quay.io/fedoraci/fedora-compose-base:$branch-$timestamp` that has an `/etc/yum.repos.d/` that points to the *in progress* compose location. Pungi then starts (and monitors) a konflux pipeline initiated from a build that is effectively `podman build --from=` or so of this repo. We'd push that container image to `quay.io/fedoraci/fedora-bootc:$branch-$timestamp`. (And branch this for `:minimal` vs `:standard` too) ### Push from compose to production The "publish to production" path after compose is tricky of course. My strawman here is that our process is just - Run final sanity checks on target images - `skopeo copy` effectively ### Shift left testing Instead of rerunning expensive (especially possibly flaky) CI we aim to "shift left" as much testing as possible - especially to the two key change points: - Key rpm changes (kernel, systemd, bootc, ...) - Substantial changes to the input git repo (like the base image rework I just landed, new packages, etc)
issue