1
1
---
2
- name : Build overcloud host images
2
+ name : Build Amphora image
3
3
on :
4
4
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
14
5
secrets :
15
6
KAYOBE_VAULT_PASSWORD :
16
7
required : true
27
18
KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
28
19
jobs :
29
20
overcloud-host-image-build :
30
- name : Build overcloud host images
21
+ name : Build Amphora image
31
22
if : github.repository == 'stackhpc/stackhpc-kayobe-config'
32
23
runs-on : arc-skc-host-image-builder-runner
33
24
permissions : {}
34
25
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
41
26
42
27
- name : Install Package
43
28
uses : ConorMacBride/install-package@main
@@ -62,10 +47,11 @@ jobs:
62
47
id : openstack_release
63
48
run : |
64
49
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview)
50
+ echo "BRANCH=$BRANCH" >> $GITHUB_OUTPUT
65
51
echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT
66
52
67
53
# Generate a tag to apply to all built overcloud host images.
68
- - name : Generate overcloud host image tag
54
+ - name : Generate Amphora image tag
69
55
id : image_tag
70
56
run : |
71
57
echo "image_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
106
92
cat << EOF > terraform.tfvars
107
93
ssh_public_key = "id_rsa.pub"
108
94
ssh_username = "ubuntu"
109
- aio_vm_name = "skc-host -image-builder"
95
+ aio_vm_name = "skc-amphora -image-builder"
110
96
# Must be an Ubuntu Jammy host to successfully build all images
111
97
# This MUST NOT be an LVM image. It can cause confusing conficts with the built image.
112
98
aio_vm_image = "Ubuntu-22.04"
@@ -202,142 +188,58 @@ jobs:
202
188
env :
203
189
KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
204
190
205
- - name : Create bifrost_httpboot Docker volume
191
+ - name : Build Octavia Amphora image
192
+ id : build_amphora
206
193
run : |
207
194
source venvs/kayobe/bin/activate &&
208
195
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
210
197
env :
211
198
KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
212
199
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
200
- name : Show last error logs
228
201
continue-on-error : true
229
202
run : |
230
203
source venvs/kayobe/bin/activate &&
231
204
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
233
206
env :
234
207
KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
235
- if : steps.build_rocky_9 .outcome == 'failure'
208
+ if : steps.build_amphora .outcome == 'failure'
236
209
237
- - name : Upload Rocky Linux 9 overcloud host image to Ark
210
+ - name : Upload Octavia Amphora image to Ark
238
211
run : |
239
212
source venvs/kayobe/bin/activate &&
240
213
source src/kayobe-config/kayobe-env --environment ci-builder &&
241
214
kayobe playbook run \
242
215
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 \
244
217
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
245
- -e artifact_type="kayobe-images" \
246
218
-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 }}" \
249
221
env :
250
222
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 : steps.build_amphora.outcome == 'success'
320
224
321
- - name : Copy logs back
225
+ - name : Copy logback
322
226
continue-on-error : true
323
227
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
327
230
if : always()
328
231
329
232
- name : Fail if any overcloud host image builds failed
330
233
run : |
331
234
echo "Builds failed. See workflow artifacts for details." &&
332
235
exit 1
333
- if : steps.build_rocky_9.outcome == 'failure' ||
334
- steps.build_ubuntu_jammy.outcome == 'failure'
236
+ if : steps.build_amphora.outcome == 'failure'
335
237
336
- - name : Upload logs artifact
238
+ - name : Upload logs & image artifact
337
239
uses : actions/upload-artifact@v4
338
240
with :
339
- name : Build logs
340
- path : ./logs
241
+ name : amphora-image-build-log
242
+ path : ./artifact
341
243
if : always()
342
244
343
245
- name : Destroy
0 commit comments