Build all releases/images
diff --git a/.github/workflows/test-master.yml b/.github/workflows/test-master.yml
new file mode 100644
index 0000000..6411dc9
--- /dev/null
+++ b/.github/workflows/test-master.yml
@@ -0,0 +1,380 @@
+name: test-master
+'on':
+  pull_request: {}
+  push:
+    branches:
+    - main
+jobs:
+  build-images:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v3.0.2
+    - uses: docker/setup-qemu-action@v2.0.0
+    - uses: docker/setup-buildx-action@v2.0.0
+    - uses: docker/login-action@v2.0.0
+      with:
+        registry: quay.io
+        username: ${{ secrets.QUAY_USERNAME }}
+        password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+    - name: Build OpenStack Cinder
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=cinder
+
+          PROJECT_REF=cf2b3005aa39b5700f51be0140c61ad9f8ec47db
+
+          PROFILES=ceph qemu
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/cinder:cf2b3005aa39b5700f51be0140c61ad9f8ec47db
+    - name: Build OpenStack Heat
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=heat
+
+          PROJECT_REF=f98d164be9c7fecd390b3e4822b33ad4054fcfca
+
+          PROFILES=
+
+          DIST_PACKAGES=curl
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/heat:f98d164be9c7fecd390b3e4822b33ad4054fcfca
+    - name: Build OpenStack Senlin
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=senlin
+
+          PROJECT_REF=5d3bc56e01f163b62b6e5d53c53ec1bdcf792cc7
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/senlin:5d3bc56e01f163b62b6e5d53c53ec1bdcf792cc7
+    - name: Build OpenStack Octavia
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=octavia
+
+          PROJECT_REF=98ec46b8073bda426316235f743e9af004172389
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/octavia:98ec46b8073bda426316235f743e9af004172389
+    - name: Build OpenStack Barbican
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=barbican
+
+          PROJECT_REF=ff7fef62116bf5e128da1207752fb69a6193e606
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/barbican:ff7fef62116bf5e128da1207752fb69a6193e606
+    - name: Build OpenStack Designate
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=designate
+
+          PROJECT_REF=927e34ee5a53771530e78bcbbd74549c632b539a
+
+          PROFILES=
+
+          DIST_PACKAGES=bind9utils
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/designate:927e34ee5a53771530e78bcbbd74549c632b539a
+    - name: Build OpenStack Nova
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=master
+
+          PROJECT=nova
+
+          PROJECT_REF=69bc4c38d1c5b98fcbbe8b16a7dfeb654e3b8173
+
+          PROFILES=ceph openvswitch configdrive qemu migration
+
+          DIST_PACKAGES=ovmf qemu-efi-aarch64
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/nova:69bc4c38d1c5b98fcbbe8b16a7dfeb654e3b8173
+    - name: Build OpenStack Neutron
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=master
+
+          PROJECT=neutron
+
+          PROJECT_REF=3e8f2325d626a695a812a093907a6f3fd2e1315f
+
+          PROFILES=openvswitch vpn
+
+          DIST_PACKAGES=jq ethtool lshw
+
+          PIP_PACKAGES=neutron-vpnaas'
+        tags: quay.io/vexxhost/neutron:3e8f2325d626a695a812a093907a6f3fd2e1315f
+    - name: Build OpenStack Monasca-Notification
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=monasca-notification
+
+          PROJECT_REF=5225304a268fbd7e5edc30ab6d2b0cbf3b92b565
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-notification:5225304a268fbd7e5edc30ab6d2b0cbf3b92b565
+    - name: Build OpenStack Monasca-Agent
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=monasca-agent
+
+          PROJECT_REF=29be6e96a6c590221e7d2fd1e30dffc7aec519a9
+
+          PROFILES=
+
+          DIST_PACKAGES=iproute2 libvirt-clients lshw
+
+          PIP_PACKAGES=libvirt-python python-glanceclient python-neutronclient python-novaclient
+          py3nvml'
+        tags: quay.io/vexxhost/monasca-agent:29be6e96a6c590221e7d2fd1e30dffc7aec519a9
+    - name: Build OpenStack Keystone
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=keystone
+
+          PROJECT_REF=1dd6993d7b9b647810e6f495b62c37627c6e8658
+
+          PROFILES=apache ldap openidc
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/keystone:1dd6993d7b9b647810e6f495b62c37627c6e8658
+    - name: Build OpenStack Horizon
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=horizon
+
+          PROJECT_REF=857d17467adca804fab70c0d8a88f2bf89234ae5
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=designate-dashboard heat-dashboard ironic-ui magnum-ui neutron-vpnaas-dashboard
+          octavia-dashboard senlin-dashboard monasca-ui'
+        tags: quay.io/vexxhost/horizon:857d17467adca804fab70c0d8a88f2bf89234ae5
+    - name: Build OpenStack Monasca-Api
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=monasca-api
+
+          PROJECT_REF=658c68b593a4d83f59143dc6c7df81860d3f57cb
+
+          PROFILES=apache influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-api:658c68b593a4d83f59143dc6c7df81860d3f57cb
+    - name: Build OpenStack Ironic
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=ironic
+
+          PROJECT_REF=4a347b3069498d0f2b49105014e6e118b5972c0f
+
+          PROFILES=ipxe ipmi qemu tftp
+
+          DIST_PACKAGES=ethtool lshw iproute2
+
+          PIP_PACKAGES=python-dracclient sushy'
+        tags: quay.io/vexxhost/ironic:4a347b3069498d0f2b49105014e6e118b5972c0f
+    - name: Build OpenStack Glance
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=glance
+
+          PROJECT_REF=cb60c1d2facde2f318ec30c8b9cf63844eaccf92
+
+          PROFILES=ceph
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/glance:cb60c1d2facde2f318ec30c8b9cf63844eaccf92
+    - name: Build OpenStack Magnum
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=magnum
+
+          PROJECT_REF=60b338126601be3db42ba65d71649c4e3878b4f3
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/magnum:60b338126601be3db42ba65d71649c4e3878b4f3
+    - name: Build OpenStack Monasca-Persister
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=monasca-persister
+
+          PROJECT_REF=1ea4e21eb231e4fe193e62f1b03b957c9d4281c8
+
+          PROFILES=influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-persister:1ea4e21eb231e4fe193e62f1b03b957c9d4281c8
+    - name: Build OpenStack Placement
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=master
+
+          PROJECT=placement
+
+          PROJECT_REF=d0e05e89ac4a57b6489007ed46e86357f11e5b23
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=httplib2'
+        tags: quay.io/vexxhost/placement:d0e05e89ac4a57b6489007ed46e86357f11e5b23
diff --git a/.github/workflows/test-wallaby.yml b/.github/workflows/test-wallaby.yml
index 57cfea7..ce055b6 100644
--- a/.github/workflows/test-wallaby.yml
+++ b/.github/workflows/test-wallaby.yml
@@ -16,6 +16,207 @@
         registry: quay.io
         username: ${{ secrets.QUAY_USERNAME }}
         password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+    - name: Build OpenStack Cinder
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=cinder
+
+          PROJECT_REF=70164132dcc590c944fee36c58e93056a3447142
+
+          PROFILES=ceph qemu
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/cinder:70164132dcc590c944fee36c58e93056a3447142
+    - name: Build OpenStack Heat
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=heat
+
+          PROJECT_REF=d0e2ded71374cffab41499e75efb81782bf83ffa
+
+          PROFILES=
+
+          DIST_PACKAGES=curl
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/heat:d0e2ded71374cffab41499e75efb81782bf83ffa
+    - name: Build OpenStack Senlin
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=senlin
+
+          PROJECT_REF=ac8245b582376b460a2494ad23ff9e2d83d228cb
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/senlin:ac8245b582376b460a2494ad23ff9e2d83d228cb
+    - name: Build OpenStack Octavia
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=octavia
+
+          PROJECT_REF=8abf181448190ea272225ae4415586cbc0e24c6a
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/octavia:8abf181448190ea272225ae4415586cbc0e24c6a
+    - name: Build OpenStack Barbican
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=barbican
+
+          PROJECT_REF=486e60723f1f635b8e1843bccaf144d85556a9f6
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/barbican:486e60723f1f635b8e1843bccaf144d85556a9f6
+    - name: Build OpenStack Designate
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=designate
+
+          PROJECT_REF=8cef906600117b71903b54c4d7c1e072902f7a46
+
+          PROFILES=
+
+          DIST_PACKAGES=bind9utils
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/designate:8cef906600117b71903b54c4d7c1e072902f7a46
+    - name: Build OpenStack Nova
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=nova
+
+          PROJECT_REF=2f7f4cc0babbda80946d9b56eae8f988b39a4d9d
+
+          PROFILES=ceph openvswitch configdrive qemu migration
+
+          DIST_PACKAGES=ovmf qemu-efi-aarch64
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/nova:2f7f4cc0babbda80946d9b56eae8f988b39a4d9d
+    - name: Build OpenStack Neutron
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=neutron
+
+          PROJECT_REF=ce82edb2db9cd0dbc640e1fa709540bfd876bb58
+
+          PROFILES=openvswitch vpn
+
+          DIST_PACKAGES=jq ethtool lshw
+
+          PIP_PACKAGES=neutron-vpnaas'
+        tags: quay.io/vexxhost/neutron:ce82edb2db9cd0dbc640e1fa709540bfd876bb58
+    - name: Build OpenStack Monasca-Notification
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=monasca-notification
+
+          PROJECT_REF=b7f87925990f7f816a9b61ed542322d544d30265
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-notification:b7f87925990f7f816a9b61ed542322d544d30265
+    - name: Build OpenStack Monasca-Agent
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=monasca-agent
+
+          PROJECT_REF=8547772515174ec785ba2bb2dcc88965e0b094f9
+
+          PROFILES=
+
+          DIST_PACKAGES=iproute2 libvirt-clients lshw
+
+          PIP_PACKAGES=libvirt-python python-glanceclient python-neutronclient python-novaclient
+          py3nvml'
+        tags: quay.io/vexxhost/monasca-agent:8547772515174ec785ba2bb2dcc88965e0b094f9
     - name: Build OpenStack Keystone
       uses: docker/build-push-action@v3.1.1
       with:
@@ -36,3 +237,144 @@
 
           PIP_PACKAGES='
         tags: quay.io/vexxhost/keystone:6c75b657352a86e50e63aec44d28784d8863df99
+    - name: Build OpenStack Horizon
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=horizon
+
+          PROJECT_REF=82698aa8901b0533f2e62868fabbf5ef4c36cea0
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=designate-dashboard heat-dashboard ironic-ui magnum-ui neutron-vpnaas-dashboard
+          octavia-dashboard senlin-dashboard monasca-ui'
+        tags: quay.io/vexxhost/horizon:82698aa8901b0533f2e62868fabbf5ef4c36cea0
+    - name: Build OpenStack Monasca-Api
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=monasca-api
+
+          PROJECT_REF=6a18732f771dd299b9375ad0cf56aacfc0d1d156
+
+          PROFILES=apache influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-api:6a18732f771dd299b9375ad0cf56aacfc0d1d156
+    - name: Build OpenStack Ironic
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=ironic
+
+          PROJECT_REF=35e20b62de1a867534d54de844496072ae291eac
+
+          PROFILES=ipxe ipmi qemu tftp
+
+          DIST_PACKAGES=ethtool lshw iproute2
+
+          PIP_PACKAGES=python-dracclient sushy'
+        tags: quay.io/vexxhost/ironic:35e20b62de1a867534d54de844496072ae291eac
+    - name: Build OpenStack Glance
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=glance
+
+          PROJECT_REF=677c89c23631e9083261a1a18ed438d8966e0de2
+
+          PROFILES=ceph
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/glance:677c89c23631e9083261a1a18ed438d8966e0de2
+    - name: Build OpenStack Magnum
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=magnum
+
+          PROJECT_REF=a35f48e4357bf5f2601fbdaf62d2074719db1dd9
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/magnum:a35f48e4357bf5f2601fbdaf62d2074719db1dd9
+    - name: Build OpenStack Monasca-Persister
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=monasca-persister
+
+          PROJECT_REF=0d1cdd567ab030266d59240b80ee405d5a123fbc
+
+          PROFILES=influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-persister:0d1cdd567ab030266d59240b80ee405d5a123fbc
+    - name: Build OpenStack Placement
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=wallaby
+
+          PROJECT=placement
+
+          PROJECT_REF=716b947c479e36ce2e9ec6d9e0bbab882f391892
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=httplib2'
+        tags: quay.io/vexxhost/placement:716b947c479e36ce2e9ec6d9e0bbab882f391892
diff --git a/.github/workflows/test-xena.yml b/.github/workflows/test-xena.yml
new file mode 100644
index 0000000..db94ea1
--- /dev/null
+++ b/.github/workflows/test-xena.yml
@@ -0,0 +1,380 @@
+name: test-xena
+'on':
+  pull_request: {}
+  push:
+    branches:
+    - main
+jobs:
+  build-images:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v3.0.2
+    - uses: docker/setup-qemu-action@v2.0.0
+    - uses: docker/setup-buildx-action@v2.0.0
+    - uses: docker/login-action@v2.0.0
+      with:
+        registry: quay.io
+        username: ${{ secrets.QUAY_USERNAME }}
+        password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+    - name: Build OpenStack Cinder
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=cinder
+
+          PROJECT_REF=b2caec7696817e02b0763d8b0d4f5d1b7f0b903e
+
+          PROFILES=ceph qemu
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/cinder:b2caec7696817e02b0763d8b0d4f5d1b7f0b903e
+    - name: Build OpenStack Heat
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=heat
+
+          PROJECT_REF=ead7cd61bd685ea46dd21c4ef3ea6b3fde273c10
+
+          PROFILES=
+
+          DIST_PACKAGES=curl
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/heat:ead7cd61bd685ea46dd21c4ef3ea6b3fde273c10
+    - name: Build OpenStack Senlin
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=senlin
+
+          PROJECT_REF=28f8abc29a966d41f8b4502d1fc7432f86b14bea
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/senlin:28f8abc29a966d41f8b4502d1fc7432f86b14bea
+    - name: Build OpenStack Octavia
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=octavia
+
+          PROJECT_REF=bda4d7160aebf7549d72b049c8dca53f7d4dedb5
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/octavia:bda4d7160aebf7549d72b049c8dca53f7d4dedb5
+    - name: Build OpenStack Barbican
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=barbican
+
+          PROJECT_REF=bb2779473f786f3bb7b84bc4f445089da8cbfe88
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/barbican:bb2779473f786f3bb7b84bc4f445089da8cbfe88
+    - name: Build OpenStack Designate
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=designate
+
+          PROJECT_REF=410c1e8d60a6b3844050dd4d3ecc46f640356bfb
+
+          PROFILES=
+
+          DIST_PACKAGES=bind9utils
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/designate:410c1e8d60a6b3844050dd4d3ecc46f640356bfb
+    - name: Build OpenStack Nova
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=xena
+
+          PROJECT=nova
+
+          PROJECT_REF=62e1a621d19e8833a18afdba86de7f8334171c63
+
+          PROFILES=ceph openvswitch configdrive qemu migration
+
+          DIST_PACKAGES=ovmf qemu-efi-aarch64
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/nova:62e1a621d19e8833a18afdba86de7f8334171c63
+    - name: Build OpenStack Neutron
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=xena
+
+          PROJECT=neutron
+
+          PROJECT_REF=74f127973831c9c5f889017b3b627bd9940e37a6
+
+          PROFILES=openvswitch vpn
+
+          DIST_PACKAGES=jq ethtool lshw
+
+          PIP_PACKAGES=neutron-vpnaas'
+        tags: quay.io/vexxhost/neutron:74f127973831c9c5f889017b3b627bd9940e37a6
+    - name: Build OpenStack Monasca-Notification
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=monasca-notification
+
+          PROJECT_REF=a94f013ff4addceb93ab556b666f63da7ea820e5
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-notification:a94f013ff4addceb93ab556b666f63da7ea820e5
+    - name: Build OpenStack Monasca-Agent
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=monasca-agent
+
+          PROJECT_REF=284233aa9e53601548ae2ec435331b59974aa5a7
+
+          PROFILES=
+
+          DIST_PACKAGES=iproute2 libvirt-clients lshw
+
+          PIP_PACKAGES=libvirt-python python-glanceclient python-neutronclient python-novaclient
+          py3nvml'
+        tags: quay.io/vexxhost/monasca-agent:284233aa9e53601548ae2ec435331b59974aa5a7
+    - name: Build OpenStack Keystone
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=keystone
+
+          PROJECT_REF=e772caa58ec7afdef4bd5fb58e44dc21a78c237b
+
+          PROFILES=apache ldap openidc
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/keystone:e772caa58ec7afdef4bd5fb58e44dc21a78c237b
+    - name: Build OpenStack Horizon
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=horizon
+
+          PROJECT_REF=48b702adf75b7f19420df578d2bf9bf813099af5
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=designate-dashboard heat-dashboard ironic-ui magnum-ui neutron-vpnaas-dashboard
+          octavia-dashboard senlin-dashboard monasca-ui'
+        tags: quay.io/vexxhost/horizon:48b702adf75b7f19420df578d2bf9bf813099af5
+    - name: Build OpenStack Monasca-Api
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=monasca-api
+
+          PROJECT_REF=44956801556b79c14373aa533df4debbd1da0ad9
+
+          PROFILES=apache influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-api:44956801556b79c14373aa533df4debbd1da0ad9
+    - name: Build OpenStack Ironic
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=ironic
+
+          PROJECT_REF=3f624e5caa83acf9b98443cf32cb0cd69143c6e2
+
+          PROFILES=ipxe ipmi qemu tftp
+
+          DIST_PACKAGES=ethtool lshw iproute2
+
+          PIP_PACKAGES=python-dracclient sushy'
+        tags: quay.io/vexxhost/ironic:3f624e5caa83acf9b98443cf32cb0cd69143c6e2
+    - name: Build OpenStack Glance
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=glance
+
+          PROJECT_REF=cbe6522e67c2e437e600b4fb153a1d048a310282
+
+          PROFILES=ceph
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/glance:cbe6522e67c2e437e600b4fb153a1d048a310282
+    - name: Build OpenStack Magnum
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=magnum
+
+          PROJECT_REF=82a22387b91bb3c77261f42535be9c9d6b53a853
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/magnum:82a22387b91bb3c77261f42535be9c9d6b53a853
+    - name: Build OpenStack Monasca-Persister
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=monasca-persister
+
+          PROJECT_REF=19d29bfab93206a7d7652037465d449895b7d8ce
+
+          PROFILES=influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-persister:19d29bfab93206a7d7652037465d449895b7d8ce
+    - name: Build OpenStack Placement
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=xena
+
+          PROJECT=placement
+
+          PROJECT_REF=f96984abd48f4d938d0fff0bab9b12ed933e320e
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=httplib2'
+        tags: quay.io/vexxhost/placement:f96984abd48f4d938d0fff0bab9b12ed933e320e
diff --git a/.github/workflows/test-yoga.yml b/.github/workflows/test-yoga.yml
new file mode 100644
index 0000000..ed28762
--- /dev/null
+++ b/.github/workflows/test-yoga.yml
@@ -0,0 +1,380 @@
+name: test-yoga
+'on':
+  pull_request: {}
+  push:
+    branches:
+    - main
+jobs:
+  build-images:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v3.0.2
+    - uses: docker/setup-qemu-action@v2.0.0
+    - uses: docker/setup-buildx-action@v2.0.0
+    - uses: docker/login-action@v2.0.0
+      with:
+        registry: quay.io
+        username: ${{ secrets.QUAY_USERNAME }}
+        password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+    - name: Build OpenStack Cinder
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=cinder
+
+          PROJECT_REF=9b583401adfd63d3d311bb9515f9a27b9b679a6f
+
+          PROFILES=ceph qemu
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/cinder:9b583401adfd63d3d311bb9515f9a27b9b679a6f
+    - name: Build OpenStack Heat
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=heat
+
+          PROJECT_REF=a406dff43d2f057674da9e564071e78c533006e0
+
+          PROFILES=
+
+          DIST_PACKAGES=curl
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/heat:a406dff43d2f057674da9e564071e78c533006e0
+    - name: Build OpenStack Senlin
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=senlin
+
+          PROJECT_REF=804056e856fb80bc881f6ef22eb57bc4adf7a287
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/senlin:804056e856fb80bc881f6ef22eb57bc4adf7a287
+    - name: Build OpenStack Octavia
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=octavia
+
+          PROJECT_REF=9c30758dfbdc4d0dc5ff9a942ffece64e5cde325
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/octavia:9c30758dfbdc4d0dc5ff9a942ffece64e5cde325
+    - name: Build OpenStack Barbican
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=barbican
+
+          PROJECT_REF=29e8fd054dbee79be2403e81fbe864aef8773ffe
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/barbican:29e8fd054dbee79be2403e81fbe864aef8773ffe
+    - name: Build OpenStack Designate
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=designate
+
+          PROJECT_REF=2dc40a15894d2c2010b7176ff6f1dff0c8621503
+
+          PROFILES=
+
+          DIST_PACKAGES=bind9utils
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/designate:2dc40a15894d2c2010b7176ff6f1dff0c8621503
+    - name: Build OpenStack Nova
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=nova
+
+          PROJECT_REF=6d61fccb8455367aaa37ae7bddf3b8befd3c3d88
+
+          PROFILES=ceph openvswitch configdrive qemu migration
+
+          DIST_PACKAGES=ovmf qemu-efi-aarch64
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/nova:6d61fccb8455367aaa37ae7bddf3b8befd3c3d88
+    - name: Build OpenStack Neutron
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64,linux/arm64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=neutron
+
+          PROJECT_REF=0836d57199a9fa337fe3bb9a5d2ad5e4cd814586
+
+          PROFILES=openvswitch vpn
+
+          DIST_PACKAGES=jq ethtool lshw
+
+          PIP_PACKAGES=neutron-vpnaas'
+        tags: quay.io/vexxhost/neutron:0836d57199a9fa337fe3bb9a5d2ad5e4cd814586
+    - name: Build OpenStack Monasca-Notification
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=monasca-notification
+
+          PROJECT_REF=50dac47ff801b784b9ad3cb701f6c9b04d0fa350
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-notification:50dac47ff801b784b9ad3cb701f6c9b04d0fa350
+    - name: Build OpenStack Monasca-Agent
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=monasca-agent
+
+          PROJECT_REF=f0b09bec09883680390d61860f91dc4322a9f084
+
+          PROFILES=
+
+          DIST_PACKAGES=iproute2 libvirt-clients lshw
+
+          PIP_PACKAGES=libvirt-python python-glanceclient python-neutronclient python-novaclient
+          py3nvml'
+        tags: quay.io/vexxhost/monasca-agent:f0b09bec09883680390d61860f91dc4322a9f084
+    - name: Build OpenStack Keystone
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=keystone
+
+          PROJECT_REF=74be2e2465277aa93932fb9cabb3781451fcbe8a
+
+          PROFILES=apache ldap openidc
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/keystone:74be2e2465277aa93932fb9cabb3781451fcbe8a
+    - name: Build OpenStack Horizon
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=horizon
+
+          PROJECT_REF=a9ae00b16453b4d0ff1803651fe726da55a3f08d
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=designate-dashboard heat-dashboard ironic-ui magnum-ui neutron-vpnaas-dashboard
+          octavia-dashboard senlin-dashboard monasca-ui'
+        tags: quay.io/vexxhost/horizon:a9ae00b16453b4d0ff1803651fe726da55a3f08d
+    - name: Build OpenStack Monasca-Api
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=monasca-api
+
+          PROJECT_REF=0b7851cab47c8e7484e3ce669c5d485bd180c504
+
+          PROFILES=apache influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-api:0b7851cab47c8e7484e3ce669c5d485bd180c504
+    - name: Build OpenStack Ironic
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=ironic
+
+          PROJECT_REF=8034242c225f3293c08ca46dc588d00c5ad0e10a
+
+          PROFILES=ipxe ipmi qemu tftp
+
+          DIST_PACKAGES=ethtool lshw iproute2
+
+          PIP_PACKAGES=python-dracclient sushy'
+        tags: quay.io/vexxhost/ironic:8034242c225f3293c08ca46dc588d00c5ad0e10a
+    - name: Build OpenStack Glance
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=glance
+
+          PROJECT_REF=20110a7d0c310eac81635d1f8c60bce423418820
+
+          PROFILES=ceph
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/glance:20110a7d0c310eac81635d1f8c60bce423418820
+    - name: Build OpenStack Magnum
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=magnum
+
+          PROJECT_REF=2ae6cd95f18a1675ec6059e6434ee58a1868b07f
+
+          PROFILES=
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/magnum:2ae6cd95f18a1675ec6059e6434ee58a1868b07f
+    - name: Build OpenStack Monasca-Persister
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=monasca-persister
+
+          PROJECT_REF=21e6581b44f70bd2464921c389fd44dad10d460f
+
+          PROFILES=influxdb
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES='
+        tags: quay.io/vexxhost/monasca-persister:21e6581b44f70bd2464921c389fd44dad10d460f
+    - name: Build OpenStack Placement
+      uses: docker/build-push-action@v3.1.1
+      with:
+        context: images/openstack
+        cache-from: type=gha
+        cache-to: type=gha,mode=max
+        push: true
+        platforms: linux/amd64
+        build-args: 'RELEASE=yoga
+
+          PROJECT=placement
+
+          PROJECT_REF=4d3df47ee3e394e3178d58c15306620809ad2806
+
+          PROFILES=apache
+
+          DIST_PACKAGES=
+
+          PIP_PACKAGES=httplib2'
+        tags: quay.io/vexxhost/placement:4d3df47ee3e394e3178d58c15306620809ad2806
diff --git a/hack/generate-github-workflows b/hack/generate-github-workflows
index 0b4f50f..19e938c 100755
--- a/hack/generate-github-workflows
+++ b/hack/generate-github-workflows
@@ -1,10 +1,16 @@
 #!/usr/bin/env python3
 
+import glob
 import yaml
 
-PROJECTS = ["keystone"]
-
-RELEASES = ["wallaby"]
+PROJECTS = [
+    r.split("/")[-1]
+    for r in glob.glob('images/openstack/projects/*')
+]
+RELEASES = [
+    r.split("/")[-1]
+    for r in glob.glob('images/openstack/releases/*')
+]
 
 
 def get_ref_for_project(project, release):