Switch to building with Depot

Change-Id: I4547e671e11f76e6776192cc68040d5e2ff61be9
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3cb5d57..bd2d792 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,6 +1,21 @@
-exclude: '^(roles/kube_prometheus_stack/files/jsonnet|charts)'
+exclude: "^(roles/kube_prometheus_stack/files/jsonnet|charts)"
 
 repos:
+  - repo: local
+    hooks:
+      - id: check-spdx-copyright-text
+        name: Check SPDX-FileCopyrightText
+        entry: '# SPDX-FileCopyrightText: © [0-9]{4} VEXXHOST, Inc.'
+        language: pygrep
+        args: [--negate]
+        files: ^images/.*/Dockerfile$
+      - id: check-spdx-license-identifier
+        name: Check SPDX-License-Identifier
+        entry: '# SPDX-License-Identifier: GPL-3.0-or-later'
+        language: pygrep
+        args: [--negate]
+        files: ^images/.*/Dockerfile$
+
   - repo: https://github.com/pre-commit/pre-commit-hooks
     rev: v4.3.0
     hooks:
diff --git a/build/lint-jobs.py b/build/lint-jobs.py
deleted file mode 100644
index 7233dd3..0000000
--- a/build/lint-jobs.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import sys
-import glob
-import yaml
-
-
-def main():
-    passed = True
-
-    for file in glob.glob("zuul.d/container-images/*.yaml"):
-        with open(file, "r") as file:
-            configs = yaml.safe_load(file)
-
-        for config in configs:
-            if "job" in config:
-                job = config["job"]
-
-                # Check if build jobs are missing 'atmosphere-buildset-registry' dependency
-                if "build-container-image-" in job["name"]:
-                    deps = job.get("dependencies", [])
-                    if not any(
-                        dep.get("name") == "atmosphere-buildset-registry"
-                        for dep in deps
-                    ):
-                        print(
-                            f"Job '{job['name']}' is missing 'atmosphere-buildset-registry' dependency."
-                        )
-                        passed = False
-
-    if passed:
-        print("All build jobs have 'atmosphere-buildset-registry' dependency.")
-    else:
-        print("Jobs missing 'atmosphere-buildset-registry' dependency.")
-        sys.exit(1)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/docker-bake.hcl b/docker-bake.hcl
new file mode 100644
index 0000000..fb1b0fe
--- /dev/null
+++ b/docker-bake.hcl
@@ -0,0 +1,256 @@
+variable "REGISTRY" {
+    default = "harbor.atmosphere.dev/library"
+}
+
+variable "TAG" {
+    default = "main"
+}
+
+target "ubuntu" {
+    context = "images/ubuntu"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "docker-image://docker.io/library/ubuntu:jammy-20240227"
+    }
+}
+
+target "ubuntu-cloud-archive" {
+    context = "images/ubuntu-cloud-archive"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "target:ubuntu"
+    }
+}
+
+target "python-base" {
+    context = "images/python-base"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+    }
+}
+
+target "openstack-venv-builder" {
+    context = "images/openstack-venv-builder"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+        "python-base" = "target:python-base"
+    }
+}
+
+target "openstack-runtime" {
+    context = "images/openstack-runtime"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "base" = "target:ubuntu-cloud-archive"
+    }
+}
+
+target "openstack-python-runtime" {
+    context = "images/openstack-runtime"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "base" = "target:python-base"
+    }
+}
+
+target "keepalived" {
+    context = "images/keepalived"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "target:ubuntu"
+    }
+
+    tags = [
+        "${REGISTRY}/keepalived:${TAG}"
+    ]
+}
+
+target "kubernetes-entrypoint" {
+    context = "images/kubernetes-entrypoint"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.21"
+    }
+
+    tags = [
+        "${REGISTRY}/kubernetes-entrypoint:${TAG}"
+    ]
+}
+
+target "libvirtd" {
+    context = "images/libvirtd"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-runtime" = "target:openstack-runtime"
+    }
+
+    args = {
+        PROJECT = "nova"
+    }
+
+    tags = [
+        "${REGISTRY}/libvirtd:${TAG}"
+    ]
+}
+
+target "netoffload" {
+    context = "images/netoffload"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.20"
+        "ubuntu" = "target:ubuntu"
+    }
+
+    tags = [
+        "${REGISTRY}/netoffload:${TAG}"
+    ]
+}
+
+target "nova-ssh" {
+    context = "images/nova-ssh"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-runtime" = "target:openstack-runtime"
+    }
+
+    args = {
+        PROJECT = "nova"
+    }
+
+    tags = [
+        "${REGISTRY}/nova-ssh:${TAG}"
+    ]
+}
+
+target "openvswitch" {
+    context = "images/openvswitch"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "centos" = "docker-image://quay.io/centos/centos:stream9"
+    }
+
+    tags = [
+        "${REGISTRY}/openvswitch:${TAG}"
+    ]
+}
+
+target "ovn" {
+    name = "ovn-${component}"
+    matrix = {
+        component = ["host", "central"]
+    }
+
+    context = "images/ovn"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.20"
+        "openvswitch" = "target:openvswitch"
+    }
+
+    args = {
+        OVN_COMPONENT = "${component}"
+    }
+
+    tags = [
+        "${REGISTRY}/ovn-${component}:${TAG}"
+    ]
+}
+
+target "python-openstackclient" {
+    context = "images/python-openstackclient"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-venv-builder" = "target:openstack-venv-builder"
+        "python-base" = "target:python-base"
+    }
+
+    tags = [
+        "${REGISTRY}/python-openstackclient:${TAG}"
+    ]
+}
+
+target "openstack" {
+    name = "openstack-${service}"
+    matrix = {
+        service = [
+            "barbican",
+            "cinder",
+            "designate",
+            "glance",
+            "heat",
+            "horizon",
+            "ironic",
+            "keystone",
+            "magnum",
+            "manila",
+            "neutron",
+            "nova",
+            "octavia",
+            "placement",
+            "staffeln",
+            "tempest",
+        ]
+    }
+
+    context = "images/${service}"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    args = {
+        PROJECT = "${service}"
+    }
+
+    contexts = {
+        "openstack-venv-builder" = "target:openstack-venv-builder"
+        "openstack-python-runtime" = "target:openstack-python-runtime"
+    }
+
+    tags = [
+        "${REGISTRY}/${service}:${TAG}"
+    ]
+}
+
+group "default" {
+    targets = [
+        "keepalived",
+        "kubernetes-entrypoint",
+        "libvirtd",
+        "netoffload",
+        "nova-ssh",
+        "openstack-barbican",
+        "openstack-cinder",
+        "openstack-designate",
+        "openstack-glance",
+        "openstack-heat",
+        "openstack-horizon",
+        "openstack-ironic",
+        "openstack-keystone",
+        "openstack-magnum",
+        "openstack-manila",
+        "openstack-neutron",
+        "openstack-nova",
+        "openstack-octavia",
+        "openstack-placement",
+        "openstack-staffeln",
+        "openstack-tempest",
+        "openvswitch",
+        "ovn-central",
+        "ovn-host",
+        "python-openstackclient",
+    ]
+}
diff --git a/images/barbican/Dockerfile b/images/barbican/Dockerfile
index f6c0f13..500cc4d 100644
--- a/images/barbican/Dockerfile
+++ b/images/barbican/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG BARBICAN_GIT_REF=ca57ef5436e20e90cf6cd6853efe3c89a9afd986
 ADD --keep-git-dir=true https://opendev.org/openstack/barbican.git#${BARBICAN_GIT_REF} /src/barbican
 RUN git -C /src/barbican fetch --unshallow
@@ -15,5 +13,5 @@
         pykmip
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/cinder/Dockerfile b/images/cinder/Dockerfile
index 1cbd002..24db11a 100644
--- a/images/cinder/Dockerfile
+++ b/images/cinder/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG CINDER_GIT_REF=b0f0b9015b9dfa228dff98eeee5116d8eca1c3cc
 ADD --keep-git-dir=true https://opendev.org/openstack/cinder.git#${CINDER_GIT_REF} /src/cinder
 RUN git -C /src/cinder fetch --unshallow
@@ -26,7 +24,7 @@
     https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/bobcat/storpool.py \
     /var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/designate/Dockerfile b/images/designate/Dockerfile
index e31e43e..83e737d 100644
--- a/images/designate/Dockerfile
+++ b/images/designate/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG DESIGNATE_GIT_REF=097ffc6df181290eba1bcd7c492b1b505bc15434
 ADD --keep-git-dir=true https://opendev.org/openstack/designate.git#${DESIGNATE_GIT_REF} /src/designate
 RUN git -C /src/designate fetch --unshallow
@@ -16,7 +14,7 @@
         /src/designate
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/glance/Dockerfile b/images/glance/Dockerfile
index 6690bc2..62509ec 100644
--- a/images/glance/Dockerfile
+++ b/images/glance/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG GLANCE_GIT_REF=0bcd6cd71c09917c6734421374fd598d73e8d0cc
 ADD --keep-git-dir=true https://opendev.org/openstack/glance.git#${GLANCE_GIT_REF} /src/glance
 RUN git -C /src/glance fetch --unshallow
@@ -22,7 +20,7 @@
     https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/bobcat/storpool.py \
     /var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/heat/Dockerfile b/images/heat/Dockerfile
index 6d37b52..318c06f 100644
--- a/images/heat/Dockerfile
+++ b/images/heat/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG HEAT_GIT_REF=80eea85194825773d1b60ecc4386b2d5ba52a066
 ADD --keep-git-dir=true https://opendev.org/openstack/heat.git#${HEAT_GIT_REF} /src/heat
 RUN git -C /src/heat fetch --unshallow
@@ -14,7 +12,7 @@
         /src/heat
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/horizon/Dockerfile b/images/horizon/Dockerfile
index c51a3f7..2b7b0a0 100644
--- a/images/horizon/Dockerfile
+++ b/images/horizon/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG HORIZON_GIT_REF=14212342cf8f7eb987e50de112958af31063e02e
 ADD --keep-git-dir=true https://opendev.org/openstack/horizon.git#${HORIZON_GIT_REF} /src/horizon
 RUN git -C /src/horizon fetch --unshallow
@@ -41,7 +39,7 @@
         pymemcache
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/ironic/Dockerfile b/images/ironic/Dockerfile
index 2f93674..967437e 100644
--- a/images/ironic/Dockerfile
+++ b/images/ironic/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG IRONIC_GIT_REF=22aa29b864eecd00bfb7c67cc2075030da1eb1d0
 ADD --keep-git-dir=true https://opendev.org/openstack/ironic.git#${IRONIC_GIT_REF} /src/ironic
 RUN git -C /src/ironic fetch --unshallow
@@ -16,7 +14,7 @@
         sushy
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/keepalived/Dockerfile b/images/keepalived/Dockerfile
index 4ccd572..4ad3e04 100644
--- a/images/keepalived/Dockerfile
+++ b/images/keepalived/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/keystone/Dockerfile b/images/keystone/Dockerfile
index 12df545..ba76495 100644
--- a/images/keystone/Dockerfile
+++ b/images/keystone/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG KEYSTONE_GIT_REF=8ca73f758bb613a57815fbe4ae78e3d2afa4af49
 ADD --keep-git-dir=true https://opendev.org/openstack/keystone.git#${KEYSTONE_GIT_REF} /src/keystone
 RUN git -C /src/keystone fetch --unshallow
@@ -15,7 +13,7 @@
         keystone-keycloak-backend==0.1.8
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
@@ -26,6 +24,11 @@
 ARG MOD_AUTH_OPENIDC_VERSION=2.4.12.1
 ARG TARGETARCH
 RUN <<EOF bash -xe
+# TODO(mnaser): mod_auth_openidc does not have aarch64 builds
+if [ "${TARGETARCH}" = "arm64" ]; then
+    exit 0
+fi
+
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
     curl
diff --git a/images/kubernetes-entrypoint/Dockerfile b/images/kubernetes-entrypoint/Dockerfile
index ecdceb3..67250af 100644
--- a/images/kubernetes-entrypoint/Dockerfile
+++ b/images/kubernetes-entrypoint/Dockerfile
@@ -1,7 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.21 AS build
+FROM golang AS build
 ARG KUBERNETES_ENTRYPOINT_GIT_REF=4fbcf7ce324dc66e78480f73035e31434cfea1e8
 ADD https://opendev.org/airship/kubernetes-entrypoint.git#${KUBERNETES_ENTRYPOINT_GIT_REF} /src
 WORKDIR /src
diff --git a/images/libvirtd/Dockerfile b/images/libvirtd/Dockerfile
index a025102..2e78633 100644
--- a/images/libvirtd/Dockerfile
+++ b/images/libvirtd/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2025-01-15T02:05:46Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-runtime:${RELEASE}
+FROM openstack-runtime
 ADD --chmod=644 https://download.ceph.com/keys/release.gpg /etc/apt/trusted.gpg.d/ceph.gpg
 COPY <<EOF /etc/apt/sources.list.d/ceph.list
 deb http://download.ceph.com/debian-reef/ jammy main
diff --git a/images/magnum/Dockerfile b/images/magnum/Dockerfile
index bee9388..a8a63c6 100644
--- a/images/magnum/Dockerfile
+++ b/images/magnum/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE} AS helm
+FROM ubuntu AS helm
 ARG TARGETOS
 ARG TARGETARCH
 ARG HELM_VERSION=3.14.0
@@ -12,7 +10,7 @@
 RUN tar -xzf /helm.tar.gz
 RUN mv /${TARGETOS}-${TARGETARCH}/helm /usr/bin/helm
 
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG MAGNUM_GIT_REF=c613ea4e419edc0086116da07e93cf19206746e1
 ADD --keep-git-dir=true https://opendev.org/openstack/magnum.git#${MAGNUM_GIT_REF} /src/magnum
 RUN git -C /src/magnum fetch --unshallow
@@ -26,7 +24,7 @@
         magnum-cluster-api==0.24.2
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/manila/Dockerfile b/images/manila/Dockerfile
index 698659b..f9caa61 100644
--- a/images/manila/Dockerfile
+++ b/images/manila/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG MANILA_GIT_REF=d8987589ae88ae9b2769fbe6f26d5b6994098038
 ADD --keep-git-dir=true https://opendev.org/openstack/manila.git#${MANILA_GIT_REF} /src/manila
 RUN git -C /src/manila fetch --unshallow
@@ -14,7 +12,7 @@
         /src/manila
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/netoffload/Dockerfile b/images/netoffload/Dockerfile
index b39553b..3fc7550 100644
--- a/images/netoffload/Dockerfile
+++ b/images/netoffload/Dockerfile
@@ -1,16 +1,14 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.20 AS build
+FROM golang AS build
 ARG NETOFFLOAD_GIT_REF=94b8c0fdb0b83bd1b7e14b9a58077a047c78a800
 ADD https://github.com/vexxhost/netoffload.git#${NETOFFLOAD_GIT_REF} /src
 WORKDIR /src
 RUN go build -v -o offloadctl ./cmd/offloadctl/main.go
 
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/neutron/Dockerfile b/images/neutron/Dockerfile
index 53bb7fb..db5b52a 100644
--- a/images/neutron/Dockerfile
+++ b/images/neutron/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2025-01-24T11:51:19Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG NEUTRON_GIT_REF=019294c71d94b788c14b23dc1da3c21f51bcdb0b
 ADD --keep-git-dir=true https://opendev.org/openstack/neutron.git#${NEUTRON_GIT_REF} /src/neutron
 RUN git -C /src/neutron fetch --unshallow
@@ -30,7 +28,7 @@
         /src/neutron-ovn-network-logging-parser
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/nova-ssh/Dockerfile b/images/nova-ssh/Dockerfile
index 2a1980d..3279f4f 100644
--- a/images/nova-ssh/Dockerfile
+++ b/images/nova-ssh/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-runtime:${RELEASE}
+FROM openstack-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/nova/Dockerfile b/images/nova/Dockerfile
index 1ce9eb0..378b95a 100644
--- a/images/nova/Dockerfile
+++ b/images/nova/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-12-17T01:27:44Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG NOVA_GIT_REF=c199becf52267ba37c5191f6f82e29bb5232b607
 ADD --keep-git-dir=true https://opendev.org/openstack/nova.git#${NOVA_GIT_REF} /src/nova
 RUN git -C /src/nova fetch --unshallow
@@ -26,7 +24,7 @@
     https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/bobcat/storpool.py \
     /var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 ADD https://github.com/novnc/noVNC.git#v1.4.0 /usr/share/novnc
 RUN <<EOF bash -xe
 apt-get update -qq
diff --git a/images/octavia/Dockerfile b/images/octavia/Dockerfile
index 109035d..14c7db2 100644
--- a/images/octavia/Dockerfile
+++ b/images/octavia/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG OCTAVIA_GIT_REF=824b51a1dad80292b7a8ad5d61bf3ce706b1fb29
 ADD --keep-git-dir=true https://opendev.org/openstack/octavia.git#${OCTAVIA_GIT_REF} /src/octavia
 RUN git -C /src/octavia fetch --unshallow
@@ -17,7 +15,7 @@
         /src/ovn-octavia-provider
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/openstack-runtime/Dockerfile b/images/openstack-runtime/Dockerfile
index 5c17a3c..2fd0d00 100644
--- a/images/openstack-runtime/Dockerfile
+++ b/images/openstack-runtime/Dockerfile
@@ -1,11 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-ARG FROM=${REGISTRY}/ubuntu-cloud-archive:${RELEASE}
-FROM ${FROM}
+FROM base
 ONBUILD ARG PROJECT
 ONBUILD ARG SHELL=/usr/sbin/nologin
 ONBUILD RUN \
diff --git a/images/openstack-venv-builder/Dockerfile b/images/openstack-venv-builder/Dockerfile
index e58a776..a1346a5 100644
--- a/images/openstack-venv-builder/Dockerfile
+++ b/images/openstack-venv-builder/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu-cloud-archive:${RELEASE} AS requirements
+FROM ubuntu-cloud-archive AS requirements
 ARG REQUIREMENTS_GIT_REF=18098b9abacbd8d7257bebc1b302294f634441ab
 ADD --keep-git-dir=true https://opendev.org/openstack/requirements.git#${REQUIREMENTS_GIT_REF} /src/requirements
 RUN cp /src/requirements/upper-constraints.txt /upper-constraints.txt
@@ -13,7 +11,7 @@
 sed -i '/horizon/d' /upper-constraints.txt
 EOF
 
-FROM ${REGISTRY}/python-base:${RELEASE}
+FROM python-base
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/openvswitch/Dockerfile b/images/openvswitch/Dockerfile
index 5299c47..3ee23da 100644
--- a/images/openvswitch/Dockerfile
+++ b/images/openvswitch/Dockerfile
@@ -1,7 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-FROM quay.io/centos/centos:stream9
+FROM centos
 ADD --chmod=755 https://github.com/krallin/tini/releases/download/v0.19.0/tini /tini
 ARG OVS_SERIES=3.2
 ARG OVS_VERSION=${OVS_SERIES}.0-80
diff --git a/images/ovn/Dockerfile b/images/ovn/Dockerfile
index 19cbcd0..d628380 100644
--- a/images/ovn/Dockerfile
+++ b/images/ovn/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-10-31T12:56:04Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.20 AS ovn-kubernetes
+FROM golang AS ovn-kubernetes
 ARG OVN_KUBERNETES_REF=5359e7d7f872058b6e5bf884c9f19d1922451f29
 ADD https://github.com/ovn-org/ovn-kubernetes.git#${OVN_KUBERNETES_REF} /src
 COPY patches/ovn-kubernetes /patches/ovn-kubernetes
@@ -14,7 +12,7 @@
 go build -o /usr/bin/ovn-kube-util ./cmd/ovn-kube-util
 EOF
 
-FROM ${REGISTRY}/openvswitch:${RELEASE}
+FROM openvswitch
 ENV OVS_USER_ID=42424
 ARG TARGETPLATFORM
 ADD --chmod=755 https://dl.k8s.io/release/v1.29.3/bin/${TARGETPLATFORM}/kubectl /usr/local/bin/kubectl
diff --git a/images/placement/Dockerfile b/images/placement/Dockerfile
index b5be5e8..958b35f 100644
--- a/images/placement/Dockerfile
+++ b/images/placement/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG PLACEMENT_GIT_REF=96a9aeb3b4a6ffff5bbf247b213409395239fc7a
 ADD --keep-git-dir=true https://opendev.org/openstack/placement.git#${PLACEMENT_GIT_REF} /src/placement
 RUN git -C /src/placement fetch --unshallow
@@ -14,5 +12,5 @@
         /src/placement
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/python-base/Dockerfile b/images/python-base/Dockerfile
index 0a7be4b..35acbc1 100644
--- a/images/python-base/Dockerfile
+++ b/images/python-base/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu-cloud-archive:${RELEASE}
+FROM ubuntu-cloud-archive
 ENV PATH=/var/lib/openstack/bin:$PATH
 RUN \
     apt-get update -qq && \
diff --git a/images/python-openstackclient/Dockerfile b/images/python-openstackclient/Dockerfile
index 1dfa764..abafa29 100644
--- a/images/python-openstackclient/Dockerfile
+++ b/images/python-openstackclient/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
 pip3 install \
     --constraint /upper-constraints.txt \
@@ -22,7 +20,7 @@
         python-swiftclient
 EOF
 
-FROM ${REGISTRY}/python-base:${RELEASE}
+FROM python-base
 COPY --from=build --link /var/lib/openstack /var/lib/openstack
 
 # NOTE(mnaser): The Magnum client relies on the SHELL environment variable
diff --git a/images/staffeln/Dockerfile b/images/staffeln/Dockerfile
index d75fa37..0f63af1 100644
--- a/images/staffeln/Dockerfile
+++ b/images/staffeln/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG STAFFELN_GIT_REF=v2.2.3
 ADD --keep-git-dir=true https://github.com/vexxhost/staffeln.git#${STAFFELN_GIT_REF} /src/staffeln
 RUN git -C /src/staffeln fetch --unshallow
@@ -14,5 +12,5 @@
         /src/staffeln
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/tempest/Dockerfile b/images/tempest/Dockerfile
index 1545877..5cabb86 100644
--- a/images/tempest/Dockerfile
+++ b/images/tempest/Dockerfile
@@ -1,17 +1,15 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.18 AS octavia-test-server
+FROM golang AS octavia-test-server
 ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#master /src
 RUN GO111MODULE=off CGO_ENABLED=0 GOOS=linux go build \
     -a -ldflags '-s -w -extldflags -static' \
     -o /build/test_server.bin \
     /src/octavia_tempest_plugin/contrib/test_server/test_server.go
 
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
 ARG TEMPEST_GIT_REF=c0da6e843a74c2392c8e87e8ff36d2fea12949c4
 ADD --keep-git-dir=true https://opendev.org/openstack/tempest.git#${TEMPEST_GIT_REF} /src/tempest
 RUN git -C /src/tempest fetch --unshallow
@@ -40,7 +38,7 @@
         /src/octavia-tempest-plugin
 EOF
 
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
 RUN <<EOF bash -xe
 apt-get update -qq
 apt-get install -qq -y --no-install-recommends \
diff --git a/images/ubuntu-cloud-archive/Dockerfile b/images/ubuntu-cloud-archive/Dockerfile
index 841542e..8531800 100644
--- a/images/ubuntu-cloud-archive/Dockerfile
+++ b/images/ubuntu-cloud-archive/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
 COPY trusted.gpg.d/ubuntu-cloud-keyring.gpg /etc/apt/trusted.gpg.d/ubuntu-cloud-keyring.gpg
 COPY <<EOF /etc/apt/sources.list.d/cloudarchive.list
 deb http://ubuntu-cloud.archive.canonical.com/ubuntu jammy-updates/caracal main
diff --git a/images/ubuntu/Dockerfile b/images/ubuntu/Dockerfile
index 89cae3d..c1c5af0 100644
--- a/images/ubuntu/Dockerfile
+++ b/images/ubuntu/Dockerfile
@@ -1,5 +1,6 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
 # Atmosphere-Rebuild-Time: 2024-06-25T22:49:25Z
 
-FROM harbor.atmosphere.dev/docker.io/library/ubuntu:jammy-20240227
+FROM ubuntu
 LABEL org.opencontainers.image.source=https://github.com/vexxhost/atmosphere
diff --git a/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml b/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml
new file mode 100644
index 0000000..d6c9f10
--- /dev/null
+++ b/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml
@@ -0,0 +1,6 @@
+---
+other:
+  - The image build process has been refactored to use ``docker-bake`` which
+    allows us to use context/built images from one target to another, allowing
+    for a much easier local building experience.  There is no functional change
+    in the images.
diff --git a/tox.ini b/tox.ini
index 4799e88..fcfaae8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -26,7 +26,6 @@
   pre-commit
 commands =
   pre-commit run --all-files --show-diff-on-failure
-  python3 {toxinidir}/build/lint-jobs.py
 
 [testenv:py3]
 deps =
diff --git a/zuul.d/container-images/barbican.yaml b/zuul.d/container-images/barbican.yaml
deleted file mode 100644
index ca1f0c0..0000000
--- a/zuul.d/container-images/barbican.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-barbican
-    gate:
-      jobs:
-        - atmosphere-build-container-image-barbican
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-barbican
-
-- job:
-    name: atmosphere-build-container-image-barbican
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-barbican
-      container_images:
-        - context: images/barbican
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/barbican"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=barbican
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/barbican/.*
-
-- job:
-    name: atmosphere-promote-container-image-barbican
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/base.yaml b/zuul.d/container-images/base.yaml
deleted file mode 100644
index 5be0310..0000000
--- a/zuul.d/container-images/base.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-buildset-registry
-    gate:
-      jobs:
-        - atmosphere-buildset-registry
-
-- job:
-    name: atmosphere-buildset-registry
-    parent: ci-buildset-registry
-    irrelevant-files:
-      - ^build/
-      - ^doc/
-      - ^releasenotes/
-
-- job:
-    name: atmosphere-build-container-image
-    parent: ci-build-container-image
-    abstract: true
-    irrelevant-files:
-      - ^build/
-      - ^doc/
-      - ^releasenotes/
-    vars: &image_vars
-      container_command: docker
-      promote_container_image_method: intermediate-registry
-      buildset_registry_namespaces:
-        - ['docker.io', 'https://registry-1.docker.io']
-        - ['quay.io', 'https://quay.io']
-        - ['gcr.io', 'https://gcr.io']
-        - ['harbor.atmosphere.dev', 'https://harbor.atmosphere.dev']
-
-- job:
-    name: atmosphere-promote-container-image
-    parent: ci-promote-container-image
-    irrelevant-files:
-      - ^build/
-      - ^doc/
-      - ^releasenotes/
-    nodeset:
-      nodes: []
-    vars: *image_vars
diff --git a/zuul.d/container-images/cinder.yaml b/zuul.d/container-images/cinder.yaml
deleted file mode 100644
index e5393ba..0000000
--- a/zuul.d/container-images/cinder.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-cinder
-    gate:
-      jobs:
-        - atmosphere-build-container-image-cinder
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-cinder
-
-- job:
-    name: atmosphere-build-container-image-cinder
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-cinder
-      container_images:
-        - context: images/cinder
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/cinder"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=cinder
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/cinder/.*
-
-- job:
-    name: atmosphere-promote-container-image-cinder
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/designate.yaml b/zuul.d/container-images/designate.yaml
deleted file mode 100644
index 1f4b19b..0000000
--- a/zuul.d/container-images/designate.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-designate
-    gate:
-      jobs:
-        - atmosphere-build-container-image-designate
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-designate
-
-- job:
-    name: atmosphere-build-container-image-designate
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-designate
-      container_images:
-        - context: images/designate
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/designate"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=designate
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/designate/.*
-
-- job:
-    name: atmosphere-promote-container-image-designate
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/glance.yaml b/zuul.d/container-images/glance.yaml
deleted file mode 100644
index 5cfc43c..0000000
--- a/zuul.d/container-images/glance.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-glance
-    gate:
-      jobs:
-        - atmosphere-build-container-image-glance
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-glance
-
-- job:
-    name: atmosphere-build-container-image-glance
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-glance
-      container_images:
-        - context: images/glance
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/glance"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=glance
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/glance/.*
-
-- job:
-    name: atmosphere-promote-container-image-glance
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/heat.yaml b/zuul.d/container-images/heat.yaml
deleted file mode 100644
index c6970eb..0000000
--- a/zuul.d/container-images/heat.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-heat
-    gate:
-      jobs:
-        - atmosphere-build-container-image-heat
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-heat
-
-- job:
-    name: atmosphere-build-container-image-heat
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-heat
-      container_images:
-        - context: images/heat
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/heat"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=heat
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/heat/.*
-
-- job:
-    name: atmosphere-promote-container-image-heat
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/horizon.yaml b/zuul.d/container-images/horizon.yaml
deleted file mode 100644
index d1f65ad..0000000
--- a/zuul.d/container-images/horizon.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-horizon
-    gate:
-      jobs:
-        - atmosphere-build-container-image-horizon
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-horizon
-
-- job:
-    name: atmosphere-build-container-image-horizon
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-horizon
-      container_images:
-        - context: images/horizon
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/horizon"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=horizon
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/horizon/.*
-
-- job:
-    name: atmosphere-promote-container-image-horizon
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/ironic.yaml b/zuul.d/container-images/ironic.yaml
deleted file mode 100644
index 0a93e62..0000000
--- a/zuul.d/container-images/ironic.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-ironic
-    gate:
-      jobs:
-        - atmosphere-build-container-image-ironic
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-ironic
-
-- job:
-    name: atmosphere-build-container-image-ironic
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-ironic
-      container_images:
-        - context: images/ironic
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/ironic"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=ironic
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/ironic/.*
-
-- job:
-    name: atmosphere-promote-container-image-ironic
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/keepalived.yaml b/zuul.d/container-images/keepalived.yaml
deleted file mode 100644
index 28677be..0000000
--- a/zuul.d/container-images/keepalived.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-keepalived
-    gate:
-      jobs:
-        - atmosphere-build-container-image-keepalived
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-keepalived
-
-- job:
-    name: atmosphere-build-container-image-keepalived
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-keepalived
-      container_images:
-        - context: images/keepalived
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/keepalived"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/keepalived/.*
-
-- job:
-    name: atmosphere-promote-container-image-keepalived
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/keystone.yaml b/zuul.d/container-images/keystone.yaml
deleted file mode 100644
index 555a980..0000000
--- a/zuul.d/container-images/keystone.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-keystone
-    gate:
-      jobs:
-        - atmosphere-build-container-image-keystone
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-keystone
-
-- job:
-    name: atmosphere-build-container-image-keystone
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-keystone
-      container_images:
-        - context: images/keystone
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/keystone"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=keystone
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/keystone/.*
-
-- job:
-    name: atmosphere-promote-container-image-keystone
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/kubernetes-entrypoint.yaml b/zuul.d/container-images/kubernetes-entrypoint.yaml
deleted file mode 100644
index 593e1ca..0000000
--- a/zuul.d/container-images/kubernetes-entrypoint.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-kubernetes-entrypoint
-    gate:
-      jobs:
-        - atmosphere-build-container-image-kubernetes-entrypoint
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-kubernetes-entrypoint
-
-- job:
-    name: atmosphere-build-container-image-kubernetes-entrypoint
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-kubernetes-entrypoint
-      container_images:
-        - context: images/kubernetes-entrypoint
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/kubernetes-entrypoint"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/kubernetes-entrypoint/.*
-
-- job:
-    name: atmosphere-promote-container-image-kubernetes-entrypoint
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/libvirtd.yaml b/zuul.d/container-images/libvirtd.yaml
deleted file mode 100644
index ac0e1ba..0000000
--- a/zuul.d/container-images/libvirtd.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-libvirtd
-    gate:
-      jobs:
-        - atmosphere-build-container-image-libvirtd
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-libvirtd
-
-- job:
-    name: atmosphere-build-container-image-libvirtd
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-openstack-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-libvirtd
-      container_images:
-        - context: images/libvirtd
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/libvirtd"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=nova
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/openstack-runtime/.*
-      - images/libvirtd/.*
-
-- job:
-    name: atmosphere-promote-container-image-libvirtd
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/magnum.yaml b/zuul.d/container-images/magnum.yaml
deleted file mode 100644
index 34f400e..0000000
--- a/zuul.d/container-images/magnum.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-magnum
-    gate:
-      jobs:
-        - atmosphere-build-container-image-magnum
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-magnum
-
-- job:
-    name: atmosphere-build-container-image-magnum
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-magnum
-      container_images:
-        - context: images/magnum
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/magnum"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=magnum
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/magnum/.*
-
-- job:
-    name: atmosphere-promote-container-image-magnum
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/manila.yaml b/zuul.d/container-images/manila.yaml
deleted file mode 100644
index 7ce412c..0000000
--- a/zuul.d/container-images/manila.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-manila
-    gate:
-      jobs:
-        - atmosphere-build-container-image-manila
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-manila
-
-- job:
-    name: atmosphere-build-container-image-manila
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-manila
-      container_images:
-        - context: images/manila
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/manila"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=manila
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/manila/.*
-
-- job:
-    name: atmosphere-promote-container-image-manila
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/netoffload.yaml b/zuul.d/container-images/netoffload.yaml
deleted file mode 100644
index 7236c12..0000000
--- a/zuul.d/container-images/netoffload.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-netoffload
-    gate:
-      jobs:
-        - atmosphere-build-container-image-netoffload
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-netoffload
-
-- job:
-    name: atmosphere-build-container-image-netoffload
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-netoffload
-      container_images:
-        - context: images/netoffload
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/netoffload"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/netoffload/.*
-
-- job:
-    name: atmosphere-promote-container-image-netoffload
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/neutron.yaml b/zuul.d/container-images/neutron.yaml
deleted file mode 100644
index ee2113a..0000000
--- a/zuul.d/container-images/neutron.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-neutron
-    gate:
-      jobs:
-        - atmosphere-build-container-image-neutron
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-neutron
-
-- job:
-    name: atmosphere-build-container-image-neutron
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-neutron
-      container_images:
-        - context: images/neutron
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/neutron"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=neutron
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/neutron/.*
-
-- job:
-    name: atmosphere-promote-container-image-neutron
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/nova-ssh.yaml b/zuul.d/container-images/nova-ssh.yaml
deleted file mode 100644
index e60df3e..0000000
--- a/zuul.d/container-images/nova-ssh.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-nova-ssh
-    gate:
-      jobs:
-        - atmosphere-build-container-image-nova-ssh
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-nova-ssh
-
-- job:
-    name: atmosphere-build-container-image-nova-ssh
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-openstack-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-nova-ssh
-      container_images:
-        - context: images/nova-ssh
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/nova-ssh"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=nova
-            - SHELL=/bin/bash
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/openstack-runtime/.*
-      - images/nova-ssh/.*
-
-- job:
-    name: atmosphere-promote-container-image-nova-ssh
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/nova.yaml b/zuul.d/container-images/nova.yaml
deleted file mode 100644
index eca6875..0000000
--- a/zuul.d/container-images/nova.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-nova
-    gate:
-      jobs:
-        - atmosphere-build-container-image-nova
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-nova
-
-- job:
-    name: atmosphere-build-container-image-nova
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-nova
-      container_images:
-        - context: images/nova
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/nova"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=nova
-            - SHELL=/bin/bash
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/nova/.*
-
-- job:
-    name: atmosphere-promote-container-image-nova
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/octavia.yaml b/zuul.d/container-images/octavia.yaml
deleted file mode 100644
index 5089cd9..0000000
--- a/zuul.d/container-images/octavia.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-octavia
-    gate:
-      jobs:
-        - atmosphere-build-container-image-octavia
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-octavia
-
-- job:
-    name: atmosphere-build-container-image-octavia
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-octavia
-      container_images:
-        - context: images/octavia
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/octavia"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=octavia
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/octavia/.*
-
-- job:
-    name: atmosphere-promote-container-image-octavia
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/openstack-python-runtime.yaml b/zuul.d/container-images/openstack-python-runtime.yaml
deleted file mode 100644
index 7d4302b..0000000
--- a/zuul.d/container-images/openstack-python-runtime.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-openstack-python-runtime
-    gate:
-      jobs:
-        - atmosphere-build-container-image-openstack-python-runtime
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-openstack-python-runtime
-
-- job:
-    name: atmosphere-build-container-image-openstack-python-runtime
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-openstack-python-runtime
-      container_images:
-        - context: images/openstack-runtime
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/openstack-python-runtime"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - "FROM={{ container_registry }}/python-base:{{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-runtime/.*
-
-- job:
-    name: atmosphere-promote-container-image-openstack-python-runtime
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/openstack-runtime.yaml b/zuul.d/container-images/openstack-runtime.yaml
deleted file mode 100644
index 21b0de0..0000000
--- a/zuul.d/container-images/openstack-runtime.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-openstack-runtime
-    gate:
-      jobs:
-        - atmosphere-build-container-image-openstack-runtime
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-openstack-runtime
-
-- job:
-    name: atmosphere-build-container-image-openstack-runtime
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-openstack-runtime
-      container_images:
-        - context: images/openstack-runtime
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/openstack-runtime"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/openstack-runtime/.*
-
-- job:
-    name: atmosphere-promote-container-image-openstack-runtime
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/openstack-venv-builder.yaml b/zuul.d/container-images/openstack-venv-builder.yaml
deleted file mode 100644
index 68bae33..0000000
--- a/zuul.d/container-images/openstack-venv-builder.yaml
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-openstack-venv-builder
-    gate:
-      jobs:
-        - atmosphere-build-container-image-openstack-venv-builder
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-openstack-venv-builder
-
-- job:
-    name: atmosphere-build-container-image-openstack-venv-builder
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-openstack-venv-builder
-      container_images:
-        - context: images/openstack-venv-builder
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/openstack-venv-builder"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-
-- job:
-    name: atmosphere-promote-container-image-openstack-venv-builder
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/openvswitch.yaml b/zuul.d/container-images/openvswitch.yaml
deleted file mode 100644
index 0d8edfd..0000000
--- a/zuul.d/container-images/openvswitch.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-openvswitch
-    gate:
-      jobs:
-        - atmosphere-build-container-image-openvswitch
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-openvswitch
-
-- job:
-    name: atmosphere-build-container-image-openvswitch
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-openvswitch
-      container_images:
-        - context: images/openvswitch
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/openvswitch"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/openvswitch/.*
-
-- job:
-    name: atmosphere-promote-container-image-openvswitch
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/ovn.yaml b/zuul.d/container-images/ovn.yaml
deleted file mode 100644
index 882b0d5..0000000
--- a/zuul.d/container-images/ovn.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-ovn
-    gate:
-      jobs:
-        - atmosphere-build-container-image-ovn
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-ovn
-
-- job:
-    name: atmosphere-build-container-image-ovn
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-openvswitch
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-ovn
-      container_images:
-        - context: images/ovn
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/ovn-central"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - OVN_COMPONENT=central
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-        - context: images/ovn
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/ovn-host"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - OVN_COMPONENT=host
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/openvswitch/.*
-      - images/ovn/.*
-
-- job:
-    name: atmosphere-promote-container-image-ovn
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/placement.yaml b/zuul.d/container-images/placement.yaml
deleted file mode 100644
index fe491d4..0000000
--- a/zuul.d/container-images/placement.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-placement
-    gate:
-      jobs:
-        - atmosphere-build-container-image-placement
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-placement
-
-- job:
-    name: atmosphere-build-container-image-placement
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-placement
-      container_images:
-        - context: images/placement
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/placement"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=placement
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/placement/.*
-
-- job:
-    name: atmosphere-promote-container-image-placement
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/python-base.yaml b/zuul.d/container-images/python-base.yaml
deleted file mode 100644
index 2b2bb0a..0000000
--- a/zuul.d/container-images/python-base.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-python-base
-    gate:
-      jobs:
-        - atmosphere-build-container-image-python-base
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-python-base
-
-- job:
-    name: atmosphere-build-container-image-python-base
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-python-base
-      container_images:
-        - context: images/python-base
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/python-base"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-
-- job:
-    name: atmosphere-promote-container-image-python-base
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/python-openstackclient.yaml b/zuul.d/container-images/python-openstackclient.yaml
deleted file mode 100644
index 435bcfb..0000000
--- a/zuul.d/container-images/python-openstackclient.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-python-openstackclient
-    gate:
-      jobs:
-        - atmosphere-build-container-image-python-openstackclient
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-python-openstackclient
-
-- job:
-    name: atmosphere-build-container-image-python-openstackclient
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-python-openstackclient
-      container_images:
-        - context: images/python-openstackclient
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/python-openstackclient"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/python-openstackclient/.*
-
-- job:
-    name: atmosphere-promote-container-image-python-openstackclient
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/staffeln.yaml b/zuul.d/container-images/staffeln.yaml
deleted file mode 100644
index 67070dd..0000000
--- a/zuul.d/container-images/staffeln.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-staffeln
-    gate:
-      jobs:
-        - atmosphere-build-container-image-staffeln
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-staffeln
-
-- job:
-    name: atmosphere-build-container-image-staffeln
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-staffeln
-      container_images:
-        - context: images/staffeln
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/staffeln"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=staffeln
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/staffeln/.*
-
-- job:
-    name: atmosphere-promote-container-image-staffeln
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/tempest.yaml b/zuul.d/container-images/tempest.yaml
deleted file mode 100644
index af9bafe..0000000
--- a/zuul.d/container-images/tempest.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-tempest
-    gate:
-      jobs:
-        - atmosphere-build-container-image-tempest
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-tempest
-
-- job:
-    name: atmosphere-build-container-image-tempest
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-      - name: atmosphere-build-container-image-ubuntu-cloud-archive
-        soft: true
-      - name: atmosphere-build-container-image-python-base
-        soft: true
-      - name: atmosphere-build-container-image-openstack-venv-builder
-        soft: true
-      - name: atmosphere-build-container-image-openstack-python-runtime
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-tempest
-      container_images:
-        - context: images/tempest
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/tempest"
-          arch:
-            - linux/amd64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-            - PROJECT=tempest
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-      - images/python-base/.*
-      - images/openstack-venv-builder/.*
-      - images/openstack-python-runtime/.*
-      - images/tempest/.*
-
-- job:
-    name: atmosphere-promote-container-image-tempest
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/ubuntu-cloud-archive.yaml b/zuul.d/container-images/ubuntu-cloud-archive.yaml
deleted file mode 100644
index 2e7431b..0000000
--- a/zuul.d/container-images/ubuntu-cloud-archive.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-ubuntu-cloud-archive
-    gate:
-      jobs:
-        - atmosphere-build-container-image-ubuntu-cloud-archive
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-ubuntu-cloud-archive
-
-- job:
-    name: atmosphere-build-container-image-ubuntu-cloud-archive
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-      - name: atmosphere-build-container-image-ubuntu
-        soft: true
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-ubuntu-cloud-archive
-      container_images:
-        - context: images/ubuntu-cloud-archive
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/ubuntu-cloud-archive"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-      - images/ubuntu-cloud-archive/.*
-
-- job:
-    name: atmosphere-promote-container-image-ubuntu-cloud-archive
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/container-images/ubuntu.yaml b/zuul.d/container-images/ubuntu.yaml
deleted file mode 100644
index 886aa64..0000000
--- a/zuul.d/container-images/ubuntu.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, 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.
-
-- project:
-    check:
-      jobs:
-        - atmosphere-build-container-image-ubuntu
-    gate:
-      jobs:
-        - atmosphere-build-container-image-ubuntu
-    promote:
-      jobs:
-        - atmosphere-promote-container-image-ubuntu
-
-- job:
-    name: atmosphere-build-container-image-ubuntu
-    parent: atmosphere-build-container-image
-    dependencies:
-      - name: atmosphere-buildset-registry
-        soft: false
-    vars: &container_image_vars
-      promote_container_image_job: atmosphere-build-container-image-ubuntu
-      container_images:
-        - context: images/ubuntu
-          registry: harbor.atmosphere.dev
-          repository: "{{ container_registry }}/ubuntu"
-          arch:
-            - linux/amd64
-            - linux/arm64
-          build_args:
-            - REGISTRY={{ container_registry }}
-            - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
-          tags:
-            - "{{ zuul.branch | replace('stable/', '') }}"
-    files: &container_image_files
-      - images/ubuntu/.*
-
-- job:
-    name: atmosphere-promote-container-image-ubuntu
-    parent: atmosphere-promote-container-image
-    vars: *container_image_vars
-    files: *container_image_files
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 13d9aea..970c59b 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -46,6 +46,25 @@
     parent: tox
 
 - job:
+    name: atmosphere-build-images
+    parent: depot-bake
+    vars:
+      depot_bake_project_id: jd10vkmkwv
+      depot_bake_environment:
+        REGISTRY: harbor.atmosphere.dev/ci
+        TAG: "{{ zuul.change }}"
+    files: &image_build_files
+      - ^images/
+      - docker-bake.hcl
+
+- job:
+    name: atmosphere-promote-images
+    parent: promote-depot-bake
+    files: *image_build_files
+    vars:
+      promote_depot_bake_job: atmosphere-build-images
+
+- job:
     name: atmosphere-build-collection
     parent: build-ansible-collection
     pre-run:
diff --git a/zuul.d/playbooks/build-collection/pre.yml b/zuul.d/playbooks/build-collection/pre.yml
index 450407b..7319377 100644
--- a/zuul.d/playbooks/build-collection/pre.yml
+++ b/zuul.d/playbooks/build-collection/pre.yml
@@ -16,7 +16,7 @@
   ansible.builtin.import_playbook: ../common/generate-changelog.yml
 
 - name: Configure Buildset Registry
-  ansible.builtin.import_playbook: ../common/configure-buildset-registry.yml
+  ansible.builtin.import_playbook: ../common/configure-ci-registry.yml
 
 - name: Prepare for collection build
   hosts: all
diff --git a/zuul.d/playbooks/common/configure-buildset-registry.yml b/zuul.d/playbooks/common/configure-buildset-registry.yml
deleted file mode 100644
index 7ab8e75..0000000
--- a/zuul.d/playbooks/common/configure-buildset-registry.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# SPDX-License-Identifier: Apache-2.0
-
-- name: Configure Buildset Registry
-  hosts: all
-  tasks:
-    # NOTE(mnaser): This can be removed once the following merges
-    #               https://review.opendev.org/c/zuul/zuul-jobs/+/915025
-    - name: Load "buildset_registry" fact
-      block:
-        - name: Check for results.json
-          stat:
-            path: "{{ zuul.executor.result_data_file }}"
-          register: result_json_stat
-          delegate_to: localhost
-        - name: Load information from zuul_return
-          no_log: true
-          set_fact:
-            buildset_registry: "{{ (lookup('file', zuul.executor.result_data_file) | from_json)['secret_data']['buildset_registry'] }}"
-          when:
-            - buildset_registry is not defined
-            - result_json_stat.stat.exists
-            - result_json_stat.stat.size > 0
-            - "'buildset_registry' in (lookup('file', zuul.executor.result_data_file) | from_json).get('secret_data')"
-
-    - name: Configure buildset registry
-      when: buildset_registry is defined
-      block:
-        - name: Install CA certificate for the registry
-          become: true
-          ansible.builtin.copy:
-            content: "{{ buildset_registry.cert }}"
-            dest: /usr/local/share/ca-certificates/registry.crt
-        - name: Update CA certificates
-          become: true
-          ansible.builtin.shell: update-ca-certificates
-        - name: Replace the registry in image manifest
-          ansible.builtin.replace:
-            path: "{{ zuul.project.src_dir }}/roles/defaults/vars/main.yml"
-            regexp: "{{ repo }}:"
-            replace: '{{ buildset_registry.host }}:{{ buildset_registry.port }}/{{ repo }}:'
-          loop: "{{ zuul.artifacts | default([]) }}"
-          loop_control:
-            loop_var: zj_zuul_artifact
-          when: "'metadata' in zj_zuul_artifact and zj_zuul_artifact.metadata.type | default('') == 'container_image'"
-          vars:
-            repo: "{{ zj_zuul_artifact.metadata.repository }}"
-        - name: Print out the new image manifest file
-          ansible.builtin.command: |
-            cat {{ zuul.project.src_dir }}/roles/defaults/vars/main.yml
diff --git a/zuul.d/playbooks/common/configure-ci-registry.yml b/zuul.d/playbooks/common/configure-ci-registry.yml
new file mode 100644
index 0000000..57684a1
--- /dev/null
+++ b/zuul.d/playbooks/common/configure-ci-registry.yml
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+- name: Configure CI registry
+  hosts: all
+  tasks:
+    - name: Replace the registry in image manifest
+      ansible.builtin.replace:
+        path: "{{ zuul.project.src_dir }}/roles/defaults/vars/main.yml"
+        regexp: "{{ zj_zuul_artifact.metadata.repository | regex_replace('/ci/', '/library/', 1) }}:.*"
+        replace: '{{ zj_zuul_artifact.metadata.repository }}:{{ zj_zuul_artifact.metadata.tag }}"'
+      loop: "{{ zuul.artifacts | default([]) }}"
+      loop_control:
+        loop_var: zj_zuul_artifact
+      when:
+        - "'metadata' in zj_zuul_artifact"
+        - "zj_zuul_artifact.metadata.type | default('') == 'container_image'"
+
+    - name: Print out the new image manifest file
+      ansible.builtin.command: |
+        cat {{ zuul.project.src_dir }}/roles/defaults/vars/main.yml
diff --git a/zuul.d/playbooks/molecule/pre.yml b/zuul.d/playbooks/molecule/pre.yml
index 932838e..4d9dfed 100644
--- a/zuul.d/playbooks/molecule/pre.yml
+++ b/zuul.d/playbooks/molecule/pre.yml
@@ -44,4 +44,4 @@
         chdir: "{{ zuul.project.src_dir }}"
 
 - name: Configure Buildset Registry
-  ansible.builtin.import_playbook: ../common/configure-buildset-registry.yml
+  ansible.builtin.import_playbook: ../common/configure-ci-registry.yml
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 415ab66..9d34783 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -22,55 +22,10 @@
         - atmosphere-tox-promtool-test
         - atmosphere-tox-helm-unittest
         - atmosphere-tox-py3
+        - atmosphere-build-images
         - atmosphere-build-collection:
             dependencies: &image_build_jobs
-              - name: atmosphere-build-container-image-barbican
-                soft: true
-              - name: atmosphere-build-container-image-cinder
-                soft: true
-              - name: atmosphere-build-container-image-designate
-                soft: true
-              - name: atmosphere-build-container-image-glance
-                soft: true
-              - name: atmosphere-build-container-image-heat
-                soft: true
-              - name: atmosphere-build-container-image-horizon
-                soft: true
-              - name: atmosphere-build-container-image-ironic
-                soft: true
-              - name: atmosphere-build-container-image-keepalived
-                soft: true
-              - name: atmosphere-build-container-image-keystone
-                soft: true
-              - name: atmosphere-build-container-image-kubernetes-entrypoint
-                soft: true
-              - name: atmosphere-build-container-image-libvirtd
-                soft: true
-              - name: atmosphere-build-container-image-magnum
-                soft: true
-              - name: atmosphere-build-container-image-manila
-                soft: true
-              - name: atmosphere-build-container-image-netoffload
-                soft: true
-              - name: atmosphere-build-container-image-neutron
-                soft: true
-              - name: atmosphere-build-container-image-nova
-                soft: true
-              - name: atmosphere-build-container-image-nova-ssh
-                soft: true
-              - name: atmosphere-build-container-image-octavia
-                soft: true
-              - name: atmosphere-build-container-image-openvswitch
-                soft: true
-              - name: atmosphere-build-container-image-ovn
-                soft: true
-              - name: atmosphere-build-container-image-placement
-                soft: true
-              - name: atmosphere-build-container-image-python-openstackclient
-                soft: true
-              - name: atmosphere-build-container-image-staffeln
-                soft: true
-              - name: atmosphere-build-container-image-tempest
+              - name: atmosphere-build-images
                 soft: true
         - atmosphere-molecule-aio-keycloak:
             dependencies: *image_build_jobs
@@ -89,6 +44,7 @@
         - atmosphere-golang-go-test
         - atmosphere-linters
         - atmosphere-tox-py3
+        - atmosphere-build-images
         - atmosphere-build-collection:
             dependencies: *image_build_jobs
         - atmosphere-molecule-aio-keycloak:
@@ -104,6 +60,9 @@
     release:
       jobs:
         - atmosphere-publish-collection
+    promote:
+      jobs:
+        - atmosphere-promote-images
     periodic:
       jobs:
         - atmosphere-molecule-aio-upgrade-openvswitch: