diff --git a/charts/calicoctl-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/calicoctl-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..24011e22
--- /dev/null
+++ b/charts/calicoctl-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    calicoctl_utility: localhost:5000/porthole-calicoctl-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/ceph-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/ceph-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..092db3f9
--- /dev/null
+++ b/charts/ceph-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    ceph_utility: localhost:5000/porthole-ceph-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/compute-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/compute-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..084ae7d5
--- /dev/null
+++ b/charts/compute-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    compute_utility: localhost:5000/porthole-compute-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/etcdctl-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/etcdctl-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..83ff0eed
--- /dev/null
+++ b/charts/etcdctl-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    etcdctl_utility: localhost:5000/porthole-etcdctl-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/mysqlclient-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/mysqlclient-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..d1a6226f
--- /dev/null
+++ b/charts/mysqlclient-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    mysqlclient_utility: localhost:5000/porthole-mysqlclient-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/openstack-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/openstack-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..15662ac3
--- /dev/null
+++ b/charts/openstack-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    openstack_utility: localhost:5000/porthole-openstack-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/charts/postgresql-utility/values_overrides/images-ubuntu_jammy.yaml b/charts/postgresql-utility/values_overrides/images-ubuntu_jammy.yaml
new file mode 100644
index 00000000..25c122f2
--- /dev/null
+++ b/charts/postgresql-utility/values_overrides/images-ubuntu_jammy.yaml
@@ -0,0 +1,5 @@
+---
+images:
+  tags:
+    postgresql_utility: localhost:5000/porthole-postgresql-utility:latest-ubuntu_jammy
+...
\ No newline at end of file
diff --git a/images/calicoctl-utility/Dockerfile.ubuntu_jammy b/images/calicoctl-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..b6841e64
--- /dev/null
+++ b/images/calicoctl-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,53 @@
+ARG FROM=docker.io/ubuntu:jammy
+ARG DOCKER_REGISTRY=quay.io
+ARG CALICOCTL_IMAGE_PREFIX=calico/ctl
+ARG CALICOCTL_VERSION=v3.27.3
+ARG CALICOCTL_IMAGE="${DOCKER_REGISTRY}/${CALICOCTL_IMAGE_PREFIX}:${CALICOCTL_VERSION}"
+
+FROM ${CALICOCTL_IMAGE} as stage_calicoctl
+
+FROM ${FROM}
+
+ARG CALICOCTL_VERSION
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0' \
+      org.projectcalico.calicoctl.version="${CALICOCTL_VERSION}"
+
+RUN set -xe \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install -y --no-install-recommends \
+         bash \
+         locales \
+         moreutils \
+         sudo \
+         socat \
+         python3.10 \
+         python3-pip \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+        oslo.rootwrap==7.0.1 \
+    && apt-get clean -y \
+    && rm -rf /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+COPY --from=stage_calicoctl /calicoctl /usr/local/bin/calicoctl
+
+RUN set -xe \
+    && chmod 0754 /usr/local/bin/calicoctl \
+    && chmod 0754 /usr/bin/socat
+
+WORKDIR /tmp
+
+CMD ["/bin/bash"]
diff --git a/images/calicoctl-utility/Dockerfile_calicoq_calicoctl.ubuntu_jammy b/images/calicoctl-utility/Dockerfile_calicoq_calicoctl.ubuntu_jammy
new file mode 100644
index 00000000..1ddb5dae
--- /dev/null
+++ b/images/calicoctl-utility/Dockerfile_calicoq_calicoctl.ubuntu_jammy
@@ -0,0 +1,61 @@
+ARG FROM=docker.io/ubuntu:jammy
+ARG DOCKER_REGISTRY=quay.io
+ARG CALICOCTL_IMAGE_PREFIX=tigera/calicoctl
+ARG CALICOCTL_VERSION=v3.27.3
+ARG CALICOCTL_IMAGE="${DOCKER_REGISTRY}/${CALICOCTL_IMAGE_PREFIX}:${CALICOCTL_VERSION}"
+ARG CALICOQ_IMAGE_PREFIX=tigera/calicoq
+ARG CALICOQ_VERSION=v3.27.3
+ARG CALICOQ_IMAGE="${DOCKER_REGISTRY}/${CALICOQ_IMAGE_PREFIX}:${CALICOQ_VERSION}"
+
+FROM ${CALICOCTL_IMAGE} as stage_calicoctl
+FROM ${CALICOQ_IMAGE} as stage_calicoq
+
+FROM ${FROM}
+
+ARG CALICOCTL_VERSION
+ARG CALICOQ_VERSION
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0' \
+      io.tigera.calicoctl.version="${CALICOCTL_VERSION}" \
+      io.tigera.calicoq.version="${CALICOQ_VERSION}"
+
+RUN set -xe \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get -y upgrade \
+    && apt-get install -y --no-install-recommends \
+       bash \
+       locales \
+       moreutils \
+       sudo \
+       socat \
+       python3.10 \
+       python3-pip \
+    && pip3 install --upgrade pip \
+    && pip3 install \
+        oslo.rootwrap==7.0.1 \
+    && apt-get clean -y \
+    && rm -rf /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+COPY --from=stage_calicoctl /calicoctl /usr/local/bin/calicoctl
+COPY --from=stage_calicoq /calicoq /usr/local/bin/calicoq
+
+RUN set -xe \
+    && chmod 0754 /usr/local/bin/calicoctl \
+    && chmod 0754 /usr/local/bin/calicoq \
+    && chmod 0754 /usr/bin/socat
+
+WORKDIR /tmp
+
+CMD ["/bin/bash"]
diff --git a/images/ceph-utility/Dockerfile.ubuntu_jammy b/images/ceph-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..85dcadbe
--- /dev/null
+++ b/images/ceph-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,66 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+# Reef 18.2.1
+ARG CEPH_RELEASE=reef
+ARG CEPH_RELEASE_TAG=18.2.1-1jammy
+ARG KUBE_VERSION=1.29.5
+
+ARG CEPH_REPO=https://mirror.mirantis.com/acicd/ceph-reef/
+ARG CEPH_KEY=https://mirror.mirantis.com/acicd/ceph-reef/release.asc
+
+ADD ${CEPH_KEY} /etc/apt/ceph-${CEPH_RELEASE}.key
+RUN set -xe \
+    && export DEBIAN_FRONTEND=noninteractive \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install -y --no-install-recommends curl apt-transport-https ca-certificates gnupg \
+    && apt-key add /etc/apt/ceph-${CEPH_RELEASE}.key \
+    && rm -f /etc/apt/ceph-${CEPH_RELEASE}.key \
+    && echo "deb ${CEPH_REPO} jammy main" | tee /etc/apt/sources.list.d/ceph.list \
+    && apt-get update \
+    && apt-get install -y --no-install-recommends \
+         bash \
+         moreutils \
+         vim \
+         sudo \
+         screen \
+         ceph=${CEPH_RELEASE_TAG} \
+         ceph-common=${CEPH_RELEASE_TAG} \
+         python3-rbd \
+         radosgw=${CEPH_RELEASE_TAG} \
+         hexedit \
+         jq \
+         s3cmd \
+         rsyslog \
+         rsync \
+         xz-utils \
+         iperf \
+         python3.10 \
+         python3-pip \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+         oslo.rootwrap==7.0.1 \
+    && curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
+       | tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
+    && apt-get purge --autoremove -y apt-transport-https \
+    && apt-get clean \
+    && rm -rf \
+         /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/images/compute-utility/Dockerfile.ubuntu_jammy b/images/compute-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..2b195af7
--- /dev/null
+++ b/images/compute-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,53 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+ARG KUBE_VERSION=1.29.5
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN set -xe \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install -y --no-install-recommends \
+         bash \
+         ca-certificates \
+         openvswitch-switch \
+         curl \
+         gnupg \
+         hexedit \
+         iperf \
+         iproute2 \
+         jq \
+         moreutils \
+         radosgw \
+         rsyslog \
+         s3cmd \
+         rsync \
+         sudo \
+         xz-utils \
+         python3.10 \
+         python3-pip \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+        oslo.rootwrap==7.0.1 \
+    && curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
+       | tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/images/etcdctl-utility/Dockerfile.ubuntu_jammy b/images/etcdctl-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..8d125ce0
--- /dev/null
+++ b/images/etcdctl-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,60 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+ARG ETCDCTL_VERSION=v3.5.13
+ARG KUBE_VERSION=1.29.5
+
+ENV GOOGLE_URL=https://storage.googleapis.com/etcd
+ENV GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
+ENV DOWNLOAD_URL=${GITHUB_URL}
+
+RUN set -xe \
+    && export DEBIAN_FRONTEND=noninteractive \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install -y --no-install-recommends \
+         curl \
+         jq \
+         locales \
+         ca-certificates \
+         gnupg \
+         bash \
+         moreutils \
+         sudo \
+         rsyslog \
+         python3.10 \
+         python3-pip \
+         python3-netifaces \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+         munch \
+         oslo.rootwrap==7.0.1 \
+         python-openstackclient==6.2.0 \
+         python-swiftclient==4.2.0 \
+    && curl --silent -L  "${DOWNLOAD_URL}/${ETCDCTL_VERSION}/etcd-${ETCDCTL_VERSION}-linux-amd64.tar.gz" \
+       | tar -zC /usr/local/bin --strip-components=1 --wildcards -x "*/etcdctl" \
+    && curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
+       | tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
+    && curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \
+    && apt-get install -y --no-install-recommends /tmp/rclone.deb \
+    && apt-get clean -y \
+    && rm -rf \
+       /tmp/* \
+       /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/images/mysqlclient-utility/Dockerfile.ubuntu_jammy b/images/mysqlclient-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..0b8b69fd
--- /dev/null
+++ b/images/mysqlclient-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,67 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+ARG KUBE_VERSION=1.29.5
+ARG MARIADB_VERSION=10.6
+ARG PERCONA_TOOLKIT_VERSION=3.5.7
+
+RUN set -xe \
+    && export DEBIAN_FRONTEND=noninteractive \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update \
+    && apt-get install -y --no-install-recommends curl apt-transport-https ca-certificates gnupg \
+    && curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup \
+    && bash mariadb_repo_setup --mariadb-server-version=${MARIADB_VERSION} \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install -y --no-install-recommends \
+         bash \
+         sudo \
+         rsyslog \
+         pwgen \
+         curl \
+         jq \
+         libdbi-perl \
+         libdbd-mysql-perl \
+         moreutils \
+         mariadb-client \
+         mariadb-server \
+         python3.10 \
+         python3-pip \
+         python3-netifaces \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+         munch \
+         oslo.rootwrap==7.0.1 \
+         python-openstackclient==6.2.0 \
+         python-swiftclient==4.2.0 \
+    && sed -i 's/$PrivDropToUser syslog/$PrivDropToUser nobody/' /etc/rsyslog.conf \
+    && curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
+       | tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
+    && curl --silent -L https://downloads.percona.com/downloads/percona-toolkit/${PERCONA_TOOLKIT_VERSION}/binary/tarball/percona-toolkit-${PERCONA_TOOLKIT_VERSION}_$(arch).tar.gz \
+       | tar -zC /usr/local/bin/ --strip-components=2 --wildcards -x "*/*/pt-show-grants" \
+    && curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \
+    && apt-get install -y --no-install-recommends /tmp/rclone.deb \
+    && apt-get purge --autoremove -y apt-transport-https \
+    && apt-get clean -y \
+    && rm -rf \
+         /tmp/* \
+         /var/cache/debconf/* \
+         /var/lib/apt/lists/* \
+         /var/tmp/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/images/openstack-utility/Dockerfile.ubuntu_jammy b/images/openstack-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..73590b8b
--- /dev/null
+++ b/images/openstack-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,44 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN set -xe \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install --no-install-recommends -y \
+         bash \
+         sudo \
+         rsyslog \
+         python3.10 \
+         python3-pip \
+         python3-netifaces \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+         munch \
+         oslo.rootwrap==7.0.1 \
+         python-openstackclient==6.2.0 \
+         python-glanceclient==4.3.0 \
+         python-novaclient==18.3.0 \
+         python-neutronclient==9.0.0 \
+         python-cinderclient==9.3.0 \
+         python-heatclient==3.2.0 \
+    && apt-get clean -y \
+    && rm -rf /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/images/postgresql-utility/Dockerfile.ubuntu_jammy b/images/postgresql-utility/Dockerfile.ubuntu_jammy
new file mode 100644
index 00000000..721c3d62
--- /dev/null
+++ b/images/postgresql-utility/Dockerfile.ubuntu_jammy
@@ -0,0 +1,57 @@
+ARG FROM=docker.io/ubuntu:jammy
+FROM ${FROM}
+
+LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
+      org.opencontainers.image.url='https://airshipit.org' \
+      org.opencontainers.image.documentation='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.source='https://opendev.org/airship/porthole' \
+      org.opencontainers.image.vendor='The Airship Authors' \
+      org.opencontainers.image.licenses='Apache-2.0'
+
+ARG KUBE_VERSION=1.29.5
+
+RUN set -xe \
+    && export DEBIAN_FRONTEND=noninteractive \
+    && sed -i '/nobody/d' /etc/passwd \
+    && echo "nobody:x:65534:65534:nobody:/nonexistent:/bin/bash" >> /etc/passwd \
+    && apt-get update && apt-get upgrade -y \
+    && apt-get install --no-install-recommends -y curl ca-certificates gnupg \
+    && echo "deb https://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
+    && curl -o /etc/apt/trusted.gpg.d/postgresql_release_signing_key.asc 'https://www.postgresql.org/media/keys/ACCC4CF8.asc' \
+    && apt-get update \
+    && apt-get install --no-install-recommends -y \
+         bash \
+         moreutils \
+         rsyslog \
+         screen \
+         sudo \
+         jq \
+         postgresql-client \
+         postgresql-common \
+         python3.10 \
+         python3-pip \
+         python3-netifaces \
+         orphan-sysvinit-scripts \
+    && pip3 install --no-cache-dir --upgrade pip \
+    && pip3 install --no-cache-dir \
+         munch \
+         oslo.rootwrap==7.0.1 \
+         python-openstackclient==6.2.0 \
+         python-swiftclient==4.2.0 \
+    && curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
+       | tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
+    && curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \
+    && apt-get install -y --no-install-recommends /tmp/rclone.deb \
+    && apt-get clean -y \
+    && rm -rf \
+         /tmp/* \
+         /var/cache/debconf/* \
+         /var/lib/apt/lists/*
+
+RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
+    && sed -i "/rootwrap_logger.setLevel/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/handler.setFormatter/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/os.path.basename/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py \
+    && sed -i "/rootwrap_logger.addHandler/s/.*/#&/" $PYTHON_LOCATION/oslo_rootwrap/wrapper.py
+
+CMD ["/bin/bash"]
diff --git a/tools/deployment/004-make-images.sh b/tools/deployment/004-make-images.sh
index 86e0c8f8..ac57925b 100755
--- a/tools/deployment/004-make-images.sh
+++ b/tools/deployment/004-make-images.sh
@@ -14,7 +14,7 @@
 set -x
 
 
- : "${DISTRO="ubuntu_focal"}"
+: "${DISTRO:="ubuntu_focal"}"
 
 env
 make images
@@ -38,4 +38,4 @@ docker push localhost:5000/porthole-compute-utility:latest-${DISTRO}
 docker push localhost:5000/porthole-etcdctl-utility:latest-${DISTRO}
 docker push localhost:5000/porthole-mysqlclient-utility:latest-${DISTRO}
 docker push localhost:5000/porthole-openstack-utility:latest-${DISTRO}
-docker push localhost:5000/porthole-postgresql-utility:latest-${DISTRO}
\ No newline at end of file
+docker push localhost:5000/porthole-postgresql-utility:latest-${DISTRO}
diff --git a/tools/gate/playbooks/docker-image-build.yaml b/tools/gate/playbooks/docker-image-build.yaml
index a13d92bb..70068da9 100644
--- a/tools/gate/playbooks/docker-image-build.yaml
+++ b/tools/gate/playbooks/docker-image-build.yaml
@@ -61,10 +61,13 @@
     - name: Make images - verbosive
       when: not publish
       shell: |
-        make images
+        make build
       args:
         chdir: "{{ zuul.project.src_dir }}"
         executable: /bin/bash
+      environment:
+        DISTRO_SUFFIX: "{{ distro_suffix }}"
+        IMAGE_NAME: "{{ image_name }}"
       become: True
 
     - name: Make images
diff --git a/tools/gate/playbooks/roles/airship-run-script/tasks/main.yaml b/tools/gate/playbooks/roles/airship-run-script/tasks/main.yaml
index 43a2cc48..d87663c3 100644
--- a/tools/gate/playbooks/roles/airship-run-script/tasks/main.yaml
+++ b/tools/gate/playbooks/roles/airship-run-script/tasks/main.yaml
@@ -20,6 +20,7 @@
   args:
     chdir: "{{ zuul.project.src_dir }}/{{ gate_scripts_relative_path }}"
   environment:
+    DISTRO: "{{ distro_suffix | default('') }}"
     CEPH_OSD_DATA_DEVICE: "{{ ceph_osd_data_device }}"
     POD_NETWORK_CIDR: "{{ kubeadm.pod_network_cidr }}"
     zuul_site_mirror_fqdn: "{{ zuul_site_mirror_fqdn }}"
diff --git a/tools/gate/playbooks/roles/upgrade-host/tasks/main.yaml b/tools/gate/playbooks/roles/upgrade-host/tasks/main.yaml
index dacf92f7..a1fdedea 100644
--- a/tools/gate/playbooks/roles/upgrade-host/tasks/main.yaml
+++ b/tools/gate/playbooks/roles/upgrade-host/tasks/main.yaml
@@ -23,7 +23,7 @@
       vars:
         packages:
           deb:
-            - linux-generic-hwe-20.04
+            - 'linux-generic-hwe-{{ ansible_distribution_version }}'
     - name: Reboot Host following kernel upgrade
       shell: sleep 2 && reboot
       become: yes
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index 6102b68e..1effb8c2 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -11,7 +12,6 @@
 # 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:
@@ -21,17 +21,25 @@
         - openstack-tox-docs
         # - airship-porthole-openstack-tox-py38
         # - airship-porthole-openstack-tox-cover
-        - airship-porthole-images-focal-build-gate-calicoctl-utility
-        - airship-porthole-images-focal-build-gate-ceph-utility
-        - airship-porthole-images-focal-build-gate-compute-utility
-        - airship-porthole-images-focal-build-gate-etcdctl-utility
-        - airship-porthole-images-focal-build-gate-mysqlclient-utility
-        - airship-porthole-images-focal-build-gate-openstack-utility
-        - airship-porthole-images-focal-build-gate-postgresql-utility
+        - airship-porthole-images-focal-build-calicoctl-utility
+        - airship-porthole-images-focal-build-ceph-utility
+        - airship-porthole-images-focal-build-compute-utility
+        - airship-porthole-images-focal-build-etcdctl-utility
+        - airship-porthole-images-focal-build-mysqlclient-utility
+        - airship-porthole-images-focal-build-openstack-utility
+        - airship-porthole-images-focal-build-postgresql-utility
+        - airship-porthole-images-jammy-build-calicoctl-utility
+        - airship-porthole-images-jammy-build-ceph-utility
+        - airship-porthole-images-jammy-build-compute-utility
+        - airship-porthole-images-jammy-build-etcdctl-utility
+        - airship-porthole-images-jammy-build-mysqlclient-utility
+        - airship-porthole-images-jammy-build-openstack-utility
+        - airship-porthole-images-jammy-build-postgresql-utility
         # - airship-porthole-deploy-functional-tests-ubuntu_focal
         - airship-porthole-openstack-tox-py38-kubeadm
         - airship-porthole-openstack-tox-cover-kubeadm
         - airship-porthole-deploy-functional-tests-ubuntu_focal-kubeadm
+        - airship-porthole-deploy-functional-tests-ubuntu_jammy-kubeadm
 
 
     gate:
@@ -41,26 +49,39 @@
         - openstack-tox-docs
         - airship-porthole-openstack-tox-py38-kubeadm
         - airship-porthole-openstack-tox-cover-kubeadm
-        - airship-porthole-deploy-functional-tests-ubuntu_focal-kubeadm
-        - airship-porthole-images-focal-build-gate-calicoctl-utility
-        - airship-porthole-images-focal-build-gate-ceph-utility
-        - airship-porthole-images-focal-build-gate-compute-utility
-        - airship-porthole-images-focal-build-gate-etcdctl-utility
-        - airship-porthole-images-focal-build-gate-mysqlclient-utility
-        - airship-porthole-images-focal-build-gate-openstack-utility
-        - airship-porthole-images-focal-build-gate-postgresql-utility
+        - airship-porthole-images-focal-build-calicoctl-utility
+        - airship-porthole-images-focal-build-ceph-utility
+        - airship-porthole-images-focal-build-compute-utility
+        - airship-porthole-images-focal-build-etcdctl-utility
+        - airship-porthole-images-focal-build-mysqlclient-utility
+        - airship-porthole-images-focal-build-openstack-utility
+        - airship-porthole-images-focal-build-postgresql-utility
+        - airship-porthole-images-jammy-build-calicoctl-utility
+        - airship-porthole-images-jammy-build-ceph-utility
+        - airship-porthole-images-jammy-build-compute-utility
+        - airship-porthole-images-jammy-build-etcdctl-utility
+        - airship-porthole-images-jammy-build-mysqlclient-utility
+        - airship-porthole-images-jammy-build-openstack-utility
+        - airship-porthole-images-jammy-build-postgresql-utility
 
 
 
     post:
       jobs:
-        - airship-porthole-images-publish-calicoctl-utility
-        - airship-porthole-images-publish-ceph-utility
-        - airship-porthole-images-publish-compute-utility
-        - airship-porthole-images-publish-etcdctl-utility
-        - airship-porthole-images-publish-mysqlclient-utility
-        - airship-porthole-images-publish-openstack-utility
-        - airship-porthole-images-publish-postgresql-utility
+        - airship-porthole-images-focal-publish-calicoctl-utility
+        - airship-porthole-images-focal-publish-ceph-utility
+        - airship-porthole-images-focal-publish-compute-utility
+        - airship-porthole-images-focal-publish-etcdctl-utility
+        - airship-porthole-images-focal-publish-mysqlclient-utility
+        - airship-porthole-images-focal-publish-openstack-utility
+        - airship-porthole-images-focal-publish-postgresql-utility
+        - airship-porthole-images-jammy-publish-calicoctl-utility
+        - airship-porthole-images-jammy-publish-ceph-utility
+        - airship-porthole-images-jammy-publish-compute-utility
+        - airship-porthole-images-jammy-publish-etcdctl-utility
+        - airship-porthole-images-jammy-publish-mysqlclient-utility
+        - airship-porthole-images-jammy-publish-openstack-utility
+        - airship-porthole-images-jammy-publish-postgresql-utility
 
 
 - nodeset:
@@ -382,6 +403,17 @@
       args:
         chdir: ../porthole
 
+- job:
+    name: airship-porthole-deploy-functional-tests-ubuntu_jammy-kubeadm
+    parent: airship-porthole-deploy-functional-tests-kubeadm
+    vars:
+      distro_suffix: ubuntu_jammy
+      osh_params:
+        openstack_release: "2023.2"
+        container_distro_name: ubuntu
+        container_distro_version: jammy
+      args:
+        chdir: ../porthole
 
 # - job:
 #     name: airship-porthole-deploy-functional-tests
@@ -442,3 +474,4 @@
           JXcwlGoK6kvXmYaG2c7yEiH2xNtTzVTai10fsalubQWR4FTmJA5LU9+HatHBa46XLy4gS
           vMHs2uJudmxhqLIhs5Er248FVjfxw7le5dPun3ir4J7Mjgypu5y8eLCMZAFIwpeqlJrVU
           uih8ByaTlSEh6FBzle7Hb330RjSztC4pX6xiNAmtkpxhF2rEEFS66B/ixwCphQ=
+...
diff --git a/zuul.d/calicoctl-utility.yaml b/zuul.d/calicoctl-utility.yaml
index 20a77937..8fda1b67 100644
--- a/zuul.d/calicoctl-utility.yaml
+++ b/zuul.d/calicoctl-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-calicoctl-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-calicoctl-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-calicoctl-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-calicoctl-utility
     files:
       - ^charts/calicoctl-utility/.*$
       - ^images/calicoctl-utility/.*$
@@ -27,44 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-calicoctl-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-calicoctl-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-calicoctl-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-calicoctl-utility
+    parent: airship-porthole-images-build-calicoctl-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-calicoctl-utility
+    parent: airship-porthole-images-publish-calicoctl-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-calicoctl-utility
+    parent: airship-porthole-images-build-calicoctl-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-calicoctl-utility
+    parent: airship-porthole-images-publish-calicoctl-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-calicoctl-utility
+    parent: airship-porthole-images-build-calicoctl-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/calicoctl-utility/.*$
-      - ^images/calicoctl-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-calicoctl-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-calicoctl-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
-
+...
\ No newline at end of file
diff --git a/zuul.d/ceph-utility.yaml b/zuul.d/ceph-utility.yaml
index c16f25ef..d6fb4974 100644
--- a/zuul.d/ceph-utility.yaml
+++ b/zuul.d/ceph-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-ceph-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-ceph-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-ceph-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-ceph-utility
     files:
       - ^charts/ceph-utility/.*$
       - ^images/ceph-utility/.*$
@@ -27,44 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-ceph-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-ceph-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-ceph-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-ceph-utility
+    parent: airship-porthole-images-build-ceph-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-ceph-utility
+    parent: airship-porthole-images-publish-ceph-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-ceph-utility
+    parent: airship-porthole-images-build-ceph-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-ceph-utility
+    parent: airship-porthole-images-publish-ceph-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-ceph-utility
+    parent: airship-porthole-images-build-ceph-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/ceph-utility/.*$
-      - ^images/ceph-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-ceph-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-ceph-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
-
+...
\ No newline at end of file
diff --git a/zuul.d/compute-utility.yaml b/zuul.d/compute-utility.yaml
index fb8dec1e..7130eb97 100644
--- a/zuul.d/compute-utility.yaml
+++ b/zuul.d/compute-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-compute-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-compute-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-compute-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-compute-utility
     files:
       - ^charts/compute-utility/.*$
       - ^images/compute-utility/.*$
@@ -27,43 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-compute-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-compute-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-compute-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-compute-utility
+    parent: airship-porthole-images-build-compute-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-compute-utility
+    parent: airship-porthole-images-publish-compute-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-compute-utility
+    parent: airship-porthole-images-build-compute-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-compute-utility
+    parent: airship-porthole-images-publish-compute-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-compute-utility
+    parent: airship-porthole-images-build-compute-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/compute-utility/.*$
-      - ^images/compute-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-compute-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-compute-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
+...
\ No newline at end of file
diff --git a/zuul.d/etcdctl-utility.yaml b/zuul.d/etcdctl-utility.yaml
index 3b02e501..40f74116 100644
--- a/zuul.d/etcdctl-utility.yaml
+++ b/zuul.d/etcdctl-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,57 +14,69 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-etcdctl-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-etcdctl-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-etcdctl-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-etcdctl-utility
     files:
-      - ^images/etcdctl-utility/.*$
       - ^charts/etcdctl-utility/.*$
+      - ^images/etcdctl-utility/.*$
       - ^Makefile$
       - ^tools/.*$
       - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-publish-etcdctl-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-etcdctl-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-etcdctl-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-etcdctl-utility
+    parent: airship-porthole-images-build-etcdctl-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-etcdctl-utility
+    parent: airship-porthole-images-publish-etcdctl-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-etcdctl-utility
+    parent: airship-porthole-images-build-etcdctl-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-etcdctl-utility
+    parent: airship-porthole-images-publish-etcdctl-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-etcdctl-utility
+    parent: airship-porthole-images-build-etcdctl-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^images/etcdctl-utility/.*$
-      - ^charts/etcdctl-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-etcdctl-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-etcdctl-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
+...
\ No newline at end of file
diff --git a/zuul.d/mysqlclient-utility.yaml b/zuul.d/mysqlclient-utility.yaml
index 2ac29b86..0b3157df 100644
--- a/zuul.d/mysqlclient-utility.yaml
+++ b/zuul.d/mysqlclient-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-mysqlclient-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-mysqlclient-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-mysqlclient-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-mysqlclient-utility
     files:
       - ^charts/mysqlclient-utility/.*$
       - ^images/mysqlclient-utility/.*$
@@ -27,44 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-mysqlclient-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-mysqlclient-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-mysqlclient-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-mysqlclient-utility
+    parent: airship-porthole-images-build-mysqlclient-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-mysqlclient-utility
+    parent: airship-porthole-images-publish-mysqlclient-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-mysqlclient-utility
+    parent: airship-porthole-images-build-mysqlclient-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-mysqlclient-utility
+    parent: airship-porthole-images-publish-mysqlclient-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-mysqlclient-utility
+    parent: airship-porthole-images-build-mysqlclient-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/mysqlclient-utility/.*$
-      - ^images/mysqlclient-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-mysqlclient-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-mysqlclient-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
-
+...
\ No newline at end of file
diff --git a/zuul.d/openstack-utility.yaml b/zuul.d/openstack-utility.yaml
index 5b4d0e9b..f7f7193e 100644
--- a/zuul.d/openstack-utility.yaml
+++ b/zuul.d/openstack-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property.  All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-openstack-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-openstack-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-openstack-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-openstack-utility
     files:
       - ^charts/openstack-utility/.*$
       - ^images/openstack-utility/.*$
@@ -27,43 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-openstack-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-openstack-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-openstack-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-openstack-utility
+    parent: airship-porthole-images-build-openstack-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-openstack-utility
+    parent: airship-porthole-images-publish-openstack-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-openstack-utility
+    parent: airship-porthole-images-build-openstack-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-openstack-utility
+    parent: airship-porthole-images-publish-openstack-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-openstack-utility
+    parent: airship-porthole-images-build-openstack-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/openstack-utility/.*$
-      - ^images/openstack-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-openstack-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-openstack-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
+...
\ No newline at end of file
diff --git a/zuul.d/postgresql-utility.yaml b/zuul.d/postgresql-utility.yaml
index fc98673e..c911c627 100644
--- a/zuul.d/postgresql-utility.yaml
+++ b/zuul.d/postgresql-utility.yaml
@@ -1,3 +1,4 @@
+---
 # Copyright 2019 AT&T Intellectual Property. All other rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +14,11 @@
 # limitations under the License.
 
 - job:
-    name: airship-porthole-images-focal-build-gate-postgresql-utility
-    parent: &parent airship-porthole-images
+    name: airship-porthole-images-build-postgresql-utility
+    parent: airship-porthole-images
+    abstract: true
     vars:
-      image_name: &image_name porthole-postgresql-utility
-      distro_suffix: ubuntu_focal
+      image_name: porthole-postgresql-utility
     files:
       - ^charts/postgresql-utility/.*$
       - ^images/postgresql-utility/.*$
@@ -27,43 +28,55 @@
 
 - job:
     name: airship-porthole-images-publish-postgresql-utility
-    parent: *parent
-    secrets:
+    parent: airship-porthole-images
+    abstract: true
+    secrets: &secrets
       - name: quay_credentials
         secret: quay_credentials
         pass-to-parent: true
     vars:
-      image_name: *image_name
-      distro_suffix: ubuntu_focal
+      image_name: porthole-postgresql-utility
       publish: true
       tags:
         dynamic:
           commit: true
 
 - job:
-    name: airship-porthole-images-bionic-build-gate-postgresql-utility
-    parent: *parent
+    name: airship-porthole-images-jammy-build-postgresql-utility
+    parent: airship-porthole-images-build-postgresql-utility
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-jammy-publish-postgresql-utility
+    parent: airship-porthole-images-publish-postgresql-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_jammy
+
+- job:
+    name: airship-porthole-images-focal-build-postgresql-utility
+    parent: airship-porthole-images-build-postgresql-utility
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-focal-publish-postgresql-utility
+    parent: airship-porthole-images-publish-postgresql-utility
+    secrets: *secrets
+    vars:
+      distro_suffix: ubuntu_focal
+
+- job:
+    name: airship-porthole-images-bionic-build-postgresql-utility
+    parent: airship-porthole-images-build-postgresql-utility
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-    files:
-      - ^charts/postgresql-utility/.*$
-      - ^images/postgresql-utility/.*$
-      - ^Makefile$
-      - ^tools/.*$
-      - ^zuul.d/.*$
 
 - job:
     name: airship-porthole-images-bionic-publish-postgresql-utility
-    parent: *parent
-    secrets:
-      - name: quay_credentials
-        secret: quay_credentials
-        pass-to-parent: true
+    parent: airship-porthole-images-publish-postgresql-utility
+    secrets: *secrets
     vars:
-      image_name: *image_name
       distro_suffix: ubuntu_bionic
-      publish: true
-      tags:
-        dynamic:
-          commit: true
+...
\ No newline at end of file