7171 # Dynamically define job matrix.
7272 # We need a separate matrix entry for each distribution, when the relevant input is true.
7373 # https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional
74+ # NOTE(bbezak): Both amd64 and aarch64 need to be built in a single workflow to create a multi-architecture manifest.
7475 # For now include only RL9 in aarch64
7576 - name : Generate build matrix
7677 id : set-matrix
@@ -150,12 +151,7 @@ jobs:
150151
151152 - name : Get Kolla tag
152153 id : write-kolla-tag
153- run : |
154- kolla_tag="${{ needs.generate-tag.outputs.openstack_release }}-${{ matrix.distro }}-${{ needs.generate-tag.outputs.datetime_tag }}"
155- if [[ "${{ matrix.distro }}" == 'rocky' ]]; then
156- kolla_tag="$kolla_tag-${{ matrix.arch }}"
157- fi
158- echo "kolla-tag=$kolla_tag" >> $GITHUB_OUTPUT
154+ run : echo "kolla-tag=${{ needs.generate-tag.outputs.openstack_release }}-${{ matrix.distro }}-${{ matrix.distro == 'rocky' && '9' || 'jammy' }}-${{ needs.generate-tag.outputs.datetime_tag }}" >> $GITHUB_OUTPUT
159155
160156 - name : Configure localhost as a seed
161157 run : |
@@ -189,7 +185,11 @@ jobs:
189185 args="$args -e kolla_base_arch=${{ matrix.arch }}"
190186 fi
191187 args="$args -e kolla_base_distro=${{ matrix.distro }}"
192- args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
188+ if [[ "${{ matrix.distro }}" = 'rocky' ]]; then
189+ args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}-${{ matrix.arch }}"
190+ else
191+ args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
192+ fi
193193 args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
194194 source venvs/kayobe/bin/activate &&
195195 source src/kayobe-config/kayobe-env --environment ci-builder &&
@@ -206,19 +206,12 @@ jobs:
206206 run : sudo cp -rnL /opt/kayobe/etc/kolla/* image-build-logs/
207207 if : inputs.overcloud
208208
209- - name : Get Kolla tag for seed images
210- id : write-kolla-tag-seed
211- run : |
212- kolla_tag_seed="${{ needs.generate-tag.outputs.openstack_release }}-${{ matrix.distro }}-${{ needs.generate-tag.outputs.datetime_tag }}"
213- echo "kolla-tag-seed=$kolla_tag_seed" >> $GITHUB_OUTPUT
214- if : inputs.seed
215-
216209 - name : Build kolla seed images
217210 id : build_seed_images
218211 continue-on-error : true
219212 run : |
220213 args="-e kolla_base_distro=${{ matrix.distro }}"
221- args="$args -e kolla_tag=${{ steps.write-kolla-tag-seed .outputs.kolla-tag-seed }}"
214+ args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
222215 args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
223216 source venvs/kayobe/bin/activate &&
224217 source src/kayobe-config/kayobe-env --environment ci-builder &&
@@ -319,7 +312,7 @@ jobs:
319312
320313 create-manifests :
321314 # Only for Rocky Linux for now
322- name : Create Docker Manifests
315+ name : Create Multiarch Docker Manifests
323316 if : github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push
324317 runs-on : arc-skc-container-image-builder-runner
325318 permissions : {}
@@ -399,8 +392,12 @@ jobs:
399392 set -ex
400393 mkdir -p logs
401394 images=$(cat all-pushed-images.txt | sort | uniq)
402- # Filter out Ubuntu images
403- manifest_images=$(echo "$images" | grep 'rocky' | sed -E 's/-(amd64|aarch64)$//' | sort | uniq)
395+ # Filter out Ubuntu and Rocky Bifrost images
396+ manifest_images=$(echo "$images" | grep -E '.*-(amd64|aarch64)$' | sed -E 's/-(amd64|aarch64)$//' | sort | uniq)
397+ if [ -z "$manifest_images" ]; then
398+ echo "No Rocky overcloud images found. Skipping manifest creation." | tee -a logs/manifest-creation.log
399+ exit 0
400+ fi
404401 for base_image in $manifest_images; do
405402 arch_images=""
406403 for arch in amd64 aarch64; do
0 commit comments