Skip to content

Commit f2490f8

Browse files
owenjonesAlex-Welsh
authored andcommitted
Update IPA build workflow
IPA building now uses the Kayobe `ipa_build_distro` and `ipa_build_release` overrides to build, in preparation for building pure Rocky IPA images. A number of other small changes made to the workflow to improve build log collection and ensure build instances can be targeted by scheduled CI resource tidying workflows.
1 parent 6a926b1 commit f2490f8

3 files changed

Lines changed: 41 additions & 25 deletions

File tree

.github/workflows/ipa-image-build.yml

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ jobs:
7171
echo "ipa_image_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
7272
7373
ipa-image-build:
74-
name: Build IPA images
75-
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
74+
name: Build IPA images (x86_64)
75+
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && (inputs.rocky9 || inputs.ubuntu-noble)
7676
environment: ${{ inputs.runner_env }}
7777
runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }}
7878
needs:
@@ -130,15 +130,19 @@ jobs:
130130
cat << EOF > terraform.tfvars
131131
ssh_public_key = "id_rsa.pub"
132132
ssh_username = "ubuntu"
133-
aio_vm_name = "skc-ipa-image-builder"
133+
aio_vm_name = "${{ env.VM_NAME }}"
134134
aio_vm_image = "${{ vars.HOST_IMAGE_BUILD_IMAGE }}"
135135
aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}"
136136
aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}"
137137
aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}"
138138
aio_vm_interface = "ens3"
139139
aio_vm_volume_size = "${{ vars.HOST_IMAGE_BUILD_VOLUME }}"
140+
aio_vm_tags = ${{ env.VM_TAGS }}
140141
EOF
141142
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
143+
env:
144+
VM_NAME: "skc-ipa-image-builder-${{ github.run_id }}"
145+
VM_TAGS: '["skc-host-image-build"]'
142146

143147
- name: Terraform Plan
144148
run: terraform plan
@@ -236,10 +240,8 @@ jobs:
236240
source venvs/kayobe/bin/activate &&
237241
source src/kayobe-config/kayobe-env --environment ci-builder &&
238242
kayobe overcloud deployment image build --force-rebuild \
239-
-e os_distribution="ubuntu" \
240-
-e os_release="noble" \
241-
-e ipa_ci_builder_distribution="ubuntu" \
242-
-e ipa_ci_builder_release="noble"
243+
-e ipa_build_distro="ubuntu" \
244+
-e ipa_build_release="noble"
243245
env:
244246
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
245247
if: inputs.ubuntu-noble
@@ -286,17 +288,22 @@ jobs:
286288
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
287289
if: inputs.ubuntu-noble && steps.build_ubuntu_noble_ipa.outcome == 'success'
288290

291+
- name: Copy logs back
292+
continue-on-error: true
293+
run: |
294+
mkdir -p logs/ubuntu-noble
295+
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/ubuntu-noble/
296+
if: inputs.ubuntu-noble
297+
289298
- name: Build a Rocky 9 IPA image
290299
id: build_rocky_9_ipa
291300
continue-on-error: true
292301
run: |
293302
source venvs/kayobe/bin/activate &&
294303
source src/kayobe-config/kayobe-env --environment ci-builder &&
295304
kayobe overcloud deployment image build --force-rebuild \
296-
-e os_distribution="rocky" \
297-
-e os_release="9" \
298-
-e ipa_ci_builder_distribution="rocky" \
299-
-e ipa_ci_builder_release="9"
305+
-e ipa_build_distro="centos" \
306+
-e ipa_build_release="9-stream"
300307
env:
301308
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
302309
if: inputs.rocky9
@@ -346,9 +353,9 @@ jobs:
346353
- name: Copy logs back
347354
continue-on-error: true
348355
run: |
349-
mkdir logs
350-
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/
351-
if: always()
356+
mkdir -p logs/rocky-9
357+
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/rocky-9/
358+
if: inputs.rocky9
352359

353360
- name: Upload logs artifact
354361
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
@@ -373,7 +380,7 @@ jobs:
373380
if: always()
374381

375382
ipa-image-build-aarch64:
376-
name: Build Rocky 9 aarch64 IPA image
383+
name: Build IPA images (aarch64)
377384
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.rocky9-aarch64 && inputs.runner_env == 'SMS Lab'
378385
environment: ${{ inputs.runner_env }}
379386
runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }}
@@ -432,15 +439,19 @@ jobs:
432439
cat << EOF > terraform.tfvars
433440
ssh_public_key = "id_rsa.pub"
434441
ssh_username = "ubuntu"
435-
aio_vm_name = "skc-ipa-image-builder-arm64"
442+
aio_vm_name = "${{ env.VM_NAME }}"
436443
aio_vm_image = "${{ vars.HOST_IMAGE_BUILD_IMAGE_ARM64 }}"
437444
aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}"
438445
aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}"
439446
aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}"
440447
aio_vm_interface = "ens3"
441448
aio_vm_volume_size = "${{ vars.HOST_IMAGE_BUILD_VOLUME }}"
449+
aio_vm_tags = ${{ env.VM_TAGS }}
442450
EOF
443451
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
452+
env:
453+
VM_NAME: "skc-ipa-image-builder-arm64-${{ github.run_id }}"
454+
VM_TAGS: '["skc-host-image-build"]'
444455

445456
- name: Terraform Plan
446457
run: terraform plan
@@ -538,13 +549,12 @@ jobs:
538549
source venvs/kayobe/bin/activate &&
539550
source src/kayobe-config/kayobe-env --environment ci-builder &&
540551
kayobe overcloud deployment image build --force-rebuild \
541-
-e os_distribution="rocky" \
542-
-e os_release="9" \
543-
-e ipa_ci_builder_distribution="rocky" \
544-
-e ipa_ci_builder_release="9" \
545-
-e ipa_ci_builder_arch="aarch64"
552+
-e ipa_build_distro="centos" \
553+
-e ipa_build_release="9-stream" \
554+
-e ipa_build_arch="aarch64"
546555
env:
547556
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
557+
if: inputs.rocky9-aarch64
548558

549559
- name: Show last error logs
550560
continue-on-error: true
@@ -595,9 +605,9 @@ jobs:
595605
- name: Copy logs back
596606
continue-on-error: true
597607
run: |
598-
mkdir logs
599-
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/
600-
if: always()
608+
mkdir -p logs/rocky-9
609+
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/rocky-9/
610+
if: inputs.rocky9-aarch64
601611

602612
- name: Upload logs artifact
603613
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0

etc/kayobe/environments/ci-builder/stackhpc-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ stackhpc_release_pulp_password: "{{ stackhpc_docker_registry_password }}"
120120

121121
# Build during IPA builder workflow
122122
ipa_build_images: true
123-
ipa_build_dib_env_extra: "{{ {'DISTRO_NAME': ipa_ci_builder_distribution | default('ubuntu'), 'DIB_RELEASE': ipa_ci_builder_release | default('noble')} | combine({'ARCH': ipa_ci_builder_arch} if ipa_ci_builder_arch is defined else {}) }}"
123+
ipa_build_dib_env_extra: "{{ {'DISTRO_NAME': ipa_build_distro | default('ubuntu')} | combine({'ARCH': ipa_build_arch} if ipa_build_arch is defined else {}) }}"
124124

125125
# Ensure Ark repos are disabled during CI runs, this is due to
126126
# builder being a member of the 'overcloud' group for IPA builds.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
IPA building now uses the Kayobe ``ipa_build_distro`` and
5+
``ipa_build_release`` overrides to build, in preparation
6+
for building pure Rocky IPA images.

0 commit comments

Comments
 (0)