11---
2- name : Build overcloud host images
2+ name : Build Amphora image
33on :
44 workflow_dispatch :
5- inputs :
6- rocky9 :
7- description : Build Rocky Linux 9
8- type : boolean
9- default : true
10- ubuntu-jammy :
11- description : Build Ubuntu 22.04 Jammy
12- type : boolean
13- default : true
145 secrets :
156 KAYOBE_VAULT_PASSWORD :
167 required : true
2718 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
2819jobs :
2920 overcloud-host-image-build :
30- name : Build overcloud host images
21+ name : Build Amphora image
3122 if : github.repository == 'stackhpc/stackhpc-kayobe-config'
3223 runs-on : arc-skc-host-image-builder-runner
3324 permissions : {}
3425 steps :
35- - name : Validate inputs
36- run : |
37- if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.ubuntu-jammy }} == 'false' ]]; then
38- echo "At least one distribution must be selected"
39- exit 1
40- fi
4126
4227 - name : Install Package
4328 uses : ConorMacBride/install-package@main
@@ -62,10 +47,11 @@ jobs:
6247 id : openstack_release
6348 run : |
6449 BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview)
50+ echo "BRANCH=$BRANCH" >> $GITHUB_OUTPUT
6551 echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT
6652
6753 # Generate a tag to apply to all built overcloud host images.
68- - name : Generate overcloud host image tag
54+ - name : Generate Amphora image tag
6955 id : image_tag
7056 run : |
7157 echo "image_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
10692 cat << EOF > terraform.tfvars
10793 ssh_public_key = "id_rsa.pub"
10894 ssh_username = "ubuntu"
109- aio_vm_name = "skc-host -image-builder"
95+ aio_vm_name = "skc-amphora -image-builder"
11096 # Must be an Ubuntu Jammy host to successfully build all images
11197 # This MUST NOT be an LVM image. It can cause confusing conficts with the built image.
11298 aio_vm_image = "Ubuntu-22.04"
@@ -202,142 +188,67 @@ jobs:
202188 env :
203189 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
204190
205- - name : Create bifrost_httpboot Docker volume
206- run : |
207- source venvs/kayobe/bin/activate &&
208- source src/kayobe-config/kayobe-env --environment ci-builder &&
209- kayobe seed host command run --command "sudo mkdir -p /var/lib/docker/volumes/bifrost_httpboot/_data" --show-output
210- env :
211- KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
212-
213- - name : Build a Rocky Linux 9 overcloud host image
214- id : build_rocky_9
215- continue-on-error : true
216- run : |
217- source venvs/kayobe/bin/activate &&
218- source src/kayobe-config/kayobe-env --environment ci-builder &&
219- kayobe overcloud host image build --force-rebuild \
220- -e os_distribution="rocky" \
221- -e os_release="9" \
222- -e stackhpc_overcloud_dib_name=overcloud-rocky-9
223- env :
224- KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
225- if : inputs.rocky9
226-
227- - name : Show last error logs
228- continue-on-error : true
229- run : |
230- source venvs/kayobe/bin/activate &&
231- source src/kayobe-config/kayobe-env --environment ci-builder &&
232- kayobe seed host command run --command "tail -200 /opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.stdout" --show-output
233- env :
234- KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
235- if : steps.build_rocky_9.outcome == 'failure'
236-
237- - name : Upload Rocky Linux 9 overcloud host image to Ark
191+ - name : Create amphora image output directory
238192 run : |
239193 source venvs/kayobe/bin/activate &&
240194 source src/kayobe-config/kayobe-env --environment ci-builder &&
241- kayobe playbook run \
242- src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
243- -e artifact_path=/opt/kayobe/images/overcloud-rocky-9 \
244- -e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
245- -e artifact_type="kayobe-images" \
246- -e file_regex="*.qcow2" \
247- -e os_distribution="rocky" \
248- -e os_release="9"
195+ kayobe seed host command run \
196+ --command "mkdir -p /opt/kayobe/images/amphora" --show-output
249197 env :
250198 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
251- if : inputs.rocky9 && steps.build_rocky_9.outcome == 'success'
252-
253- - name : Upload Rocky Linux 9 overcloud host image to Dev Cloud
254- run : |
255- source venvs/kayobe/bin/activate &&
256- source src/kayobe-config/kayobe-env --environment ci-builder &&
257- kayobe playbook run \
258- src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \
259- -e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \
260- -e image_name=overcloud-rocky-9-${{ steps.image_tag.outputs.image_tag }}
261- env :
262- CLOUDS_YAML : ${{ secrets.CLOUDS_YAML }}
263- OS_APPLICATION_CREDENTIAL_ID : ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
264- OS_APPLICATION_CREDENTIAL_SECRET : ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
265- if : inputs.rocky9 && steps.build_rocky_9.outcome == 'success'
266199
267- - name : Build an Ubuntu Jammy 22.04 overcloud host image
268- id : build_ubuntu_jammy
269- continue-on-error : true
200+ - name : Build Octavia Amphora image
201+ id : build_amphora
270202 run : |
271203 source venvs/kayobe/bin/activate &&
272204 source src/kayobe-config/kayobe-env --environment ci-builder &&
273- kayobe overcloud host image build --force-rebuild \
274- -e os_distribution="ubuntu" \
275- -e os_release="jammy" \
276- -e stackhpc_overcloud_dib_name=overcloud-ubuntu-jammy
205+ kayobe playbook run src/kayobe-config/etc/kayobe/ansible/octavia-amphora-image-build.yml -e amphora_image_dest=/opt/kayobe/images/amphora/amphora-x64-haproxy.qcow2
277206 env :
278207 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
279- if : inputs.ubuntu-jammy
280208
281209 - name : Show last error logs
282210 continue-on-error : true
283211 run : |
284212 source venvs/kayobe/bin/activate &&
285213 source src/kayobe-config/kayobe-env --environment ci-builder &&
286- kayobe seed host command run --command "tail -200 /opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.stdout " --show-output
214+ kayobe seed host command run --command "tail -200 /var/log/octavia-amphora-image-build.log " --show-output
287215 env :
288216 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
289- if : steps.build_ubuntu_jammy .outcome == 'failure'
217+ if : steps.build_amphora .outcome == 'failure'
290218
291- - name : Upload Ubuntu Jammy 22.04 overcloud host image to Ark
219+ - name : Upload Octavia Amphora image to Ark
292220 run : |
293221 source venvs/kayobe/bin/activate &&
294222 source src/kayobe-config/kayobe-env --environment ci-builder &&
295223 kayobe playbook run \
296224 src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
297- -e artifact_path=/opt/kayobe/images/overcloud-ubuntu-jammy \
225+ -e artifact_path=/opt/kayobe/images/amphora \
298226 -e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
299- -e artifact_type="kayobe-images" \
300227 -e file_regex="*.qcow2" \
301- -e os_distribution="ubuntu " \
302- -e os_release="jammy "
228+ -e repository_name="amphora-${{ steps.openstack_release.outputs.openstack_release }} " \
229+ -e pulp_base_path="amphora/${{ steps.openstack_release.outputs.openstack_release }} "
303230 env :
304231 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
305- if : inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'
306-
307- - name : Upload Ubuntu Jammy overcloud host image to Dev Cloud
308- run : |
309- source venvs/kayobe/bin/activate &&
310- source src/kayobe-config/kayobe-env --environment ci-builder &&
311- kayobe playbook run \
312- src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \
313- -e local_image_path="/opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.qcow2" \
314- -e image_name=overcloud-ubuntu-jammy-${{ steps.image_tag.outputs.image_tag }}
315- env :
316- CLOUDS_YAML : ${{ secrets.CLOUDS_YAML }}
317- OS_APPLICATION_CREDENTIAL_ID : ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
318- OS_APPLICATION_CREDENTIAL_SECRET : ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
319- if : inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'
232+ if : steps.build_amphora.outcome == 'success'
320233
321- - name : Copy logs back
234+ - name : Copy logback
322235 continue-on-error : true
323236 run : |
324- mkdir logs
325- scp -r ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):/opt/kayobe/images/*/*.std* ./logs/
326- scp -r ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):/tmp/updated_images.txt ./logs/ || true
237+ mkdir artifact
238+ scp stack@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):/var/log/octavia-amphora-image-build.log" ./artifact
327239 if : always()
328240
329241 - name : Fail if any overcloud host image builds failed
330242 run : |
331243 echo "Builds failed. See workflow artifacts for details." &&
332244 exit 1
333- if : steps.build_rocky_9.outcome == 'failure' ||
334- steps.build_ubuntu_jammy.outcome == 'failure'
245+ if : steps.build_amphora.outcome == 'failure'
335246
336- - name : Upload logs artifact
247+ - name : Upload logs & image artifact
337248 uses : actions/upload-artifact@v4
338249 with :
339- name : Build logs
340- path : ./logs
250+ name : amphora-image-build-log
251+ path : ./artifact
341252 if : always()
342253
343254 - name : Destroy
0 commit comments