9292 - name : Generate build matrix
9393 id : set-matrix
9494 run : |
95- comma=""
9695 echo -n "matrix={\"distro\": [" >> $GITHUB_OUTPUT
96+ comma=""
9797 if [[ ${{ inputs.rocky-linux-9 }} == 'true' ]]; then
9898 echo -n "$comma\"rocky\"" >> $GITHUB_OUTPUT
9999 comma=", "
@@ -102,7 +102,7 @@ jobs:
102102 echo -n "$comma\"ubuntu\"" >> $GITHUB_OUTPUT
103103 comma=", "
104104 fi
105- echo "]}" >> $GITHUB_OUTPUT
105+ echo "], \"arch\": [\"amd64\", \"aarch64\"] }" >> $GITHUB_OUTPUT
106106
107107 - name : Display container datetime tag
108108 run : |
@@ -122,6 +122,10 @@ jobs:
122122 strategy :
123123 fail-fast : false
124124 matrix : ${{ fromJson(needs.generate-tag.outputs.matrix) }}
125+ # Exclude ubuntu aarch64 builds for now
126+ exclude :
127+ - distro : ubuntu
128+ arch : aarch64
125129 needs :
126130 - generate-tag
127131 - runner-selection
@@ -173,7 +177,12 @@ jobs:
173177
174178 - name : Get Kolla tag
175179 id : write-kolla-tag
176- 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
180+ run : |
181+ kolla_tag="${{ needs.generate-tag.outputs.openstack_release }}-${{ matrix.distro }}-${{ needs.generate-tag.outputs.datetime_tag }}"
182+ if [[ "${{ matrix.distro }}" == 'rocky' ]]; then
183+ kolla_tag="$kolla_tag-${{ matrix.arch }}"
184+ fi
185+ echo "kolla-tag=$kolla_tag" >> $GITHUB_OUTPUT
177186
178187 - name : Configure localhost as a seed
179188 run : |
@@ -203,8 +212,11 @@ jobs:
203212 continue-on-error : true
204213 run : |
205214 args="${{ inputs.regexes }}"
215+ if [[ "${{ matrix.arch }}" = 'aarch64' ]]; then
216+ args="$args -e kolla_base_arch=${{ matrix.arch }}"
217+ fi
206218 args="$args -e kolla_base_distro=${{ matrix.distro }}"
207- args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
219+ args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}
208220 args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
209221 source venvs/kayobe/bin/activate &&
210222 source src/kayobe-config/kayobe-env --environment ci-builder &&
@@ -217,26 +229,37 @@ jobs:
217229 run : sudo mv /var/log/kolla-build.log image-build-logs/kolla-build-overcloud.log
218230 if : inputs.overcloud
219231
232+ - name : Copy build configs to output directory
233+ run : sudo cp -rnL /opt/kayobe/etc/kolla/* image-build-logs/
234+ if : inputs.overcloud
235+
236+ - name : Get Kolla tag for seed images
237+ id : write-kolla-tag-seed
238+ run : |
239+ kolla_tag_seed="${{ needs.generate-tag.outputs.openstack_release }}-${{ matrix.distro }}-${{ needs.generate-tag.outputs.datetime_tag }}"
240+ echo "kolla-tag-seed=$kolla_tag_seed" >> $GITHUB_OUTPUT
241+ if : inputs.seed
242+
220243 - name : Build kolla seed images
221244 id : build_seed_images
222245 continue-on-error : true
223246 run : |
224247 args="-e kolla_base_distro=${{ matrix.distro }}"
225- args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
248+ args="$args -e kolla_tag=${{ steps.write-kolla-tag-seed .outputs.kolla-tag-seed }}"
226249 args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
227250 source venvs/kayobe/bin/activate &&
228251 source src/kayobe-config/kayobe-env --environment ci-builder &&
229252 kayobe seed container image build $args
230253 env :
231254 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
232- if : inputs.seed
255+ if : inputs.seed && matrix.arch == 'amd64'
233256
234257 - name : Copy seed container image build logs to output directory
235258 run : sudo mv /var/log/kolla-build.log image-build-logs/kolla-build-seed.log
236259 if : inputs.seed
237260
238261 - name : Get built container images
239- run : docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:${{ steps.write-kolla-tag.outputs.kolla-tag }}" > ${{ matrix.distro }}-container-images
262+ run : docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:${{ steps.write-kolla-tag.outputs.kolla-tag }}* " > ${{ matrix.distro }}-container-images
240263
241264 - name : Fail if no images have been built
242265 run : if [ $(wc -l < ${{ matrix.distro }}-container-images) -le 1 ]; then exit 1; fi
@@ -297,7 +320,7 @@ jobs:
297320 - name : Upload output artifact
298321 uses : actions/upload-artifact@v4
299322 with :
300- name : ${{ matrix.distro }}-logs
323+ name : ${{ matrix.distro }}-${{ matrix.arch }}- logs
301324 path : image-build-logs
302325 retention-days : 7
303326 if : ${{ !cancelled() }}
0 commit comments