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,58 @@ jobs:
202188 env :
203189 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
204190
205- - name : Create bifrost_httpboot Docker volume
191+ - name : Build Octavia Amphora image
192+ id : build_amphora
206193 run : |
207194 source venvs/kayobe/bin/activate &&
208195 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
196+ kayobe playbook run src/kayobe-config/etc/kayobe/ansible/octavia-amphora-image-build.yml -e amphora_image_dest=/opt/kayobe/images/amphora-x64-haproxy.qcow2
210197 env :
211198 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
212199
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-
227200 - name : Show last error logs
228201 continue-on-error : true
229202 run : |
230203 source venvs/kayobe/bin/activate &&
231204 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
205+ kayobe seed host command run --command "tail -200 /var/log/octavia-amphora-image-build.log " --show-output
233206 env :
234207 KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
235- if : steps.build_rocky_9 .outcome == 'failure'
208+ if : steps.build_amphora .outcome == 'failure'
236209
237- - name : Upload Rocky Linux 9 overcloud host image to Ark
210+ - name : Upload Octavia Amphora image to Ark
238211 run : |
239212 source venvs/kayobe/bin/activate &&
240213 source src/kayobe-config/kayobe-env --environment ci-builder &&
241214 kayobe playbook run \
242215 src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
243- -e artifact_path=/opt/kayobe/images/overcloud-rocky-9 \
216+ -e artifact_path=/opt/kayobe/images/amphora-x64-haproxy.qcow2 \
244217 -e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
245- -e artifact_type="kayobe-images" \
246218 -e file_regex="*.qcow2" \
247- -e os_distribution="rocky " \
248- -e os_release="9"
219+ -e repository_name="amphora-${{ steps.openstack_release.outputs.openstack_release }} " \
220+ -e pulp_base_path="amphora/${{ steps.openstack_release.outputs.openstack_release }}" \
249221 env :
250222 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'
266-
267- - name : Build an Ubuntu Jammy 22.04 overcloud host image
268- id : build_ubuntu_jammy
269- continue-on-error : true
270- run : |
271- source venvs/kayobe/bin/activate &&
272- 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
277- env :
278- KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
279- if : inputs.ubuntu-jammy
280-
281- - name : Show last error logs
282- continue-on-error : true
283- run : |
284- source venvs/kayobe/bin/activate &&
285- 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
287- env :
288- KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
289- if : steps.build_ubuntu_jammy.outcome == 'failure'
290-
291- - name : Upload Ubuntu Jammy 22.04 overcloud host image to Ark
292- run : |
293- source venvs/kayobe/bin/activate &&
294- source src/kayobe-config/kayobe-env --environment ci-builder &&
295- kayobe playbook run \
296- src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
297- -e artifact_path=/opt/kayobe/images/overcloud-ubuntu-jammy \
298- -e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
299- -e artifact_type="kayobe-images" \
300- -e file_regex="*.qcow2" \
301- -e os_distribution="ubuntu" \
302- -e os_release="jammy"
303- env :
304- 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'
223+ if : inputs.rocky9 && steps.build_amphora.outcome == 'success'
320224
321- - name : Copy logs back
225+ - name : Copy logback
322226 continue-on-error : true
323227 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
228+ mkdir artifact
229+ 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
327230 if : always()
328231
329232 - name : Fail if any overcloud host image builds failed
330233 run : |
331234 echo "Builds failed. See workflow artifacts for details." &&
332235 exit 1
333- if : steps.build_rocky_9.outcome == 'failure' ||
334- steps.build_ubuntu_jammy.outcome == 'failure'
236+ if : steps.build_amphora.outcome == 'failure'
335237
336- - name : Upload logs artifact
238+ - name : Upload logs & image artifact
337239 uses : actions/upload-artifact@v4
338240 with :
339- name : Build logs
340- path : ./logs
241+ name : amphora-image-build-log
242+ path : ./artifact
341243 if : always()
342244
343245 - name : Destroy
0 commit comments