Skip to content

Commit b27a0f9

Browse files
Test checksum support
1 parent 711b25d commit b27a0f9

File tree

1 file changed

+133
-44
lines changed

1 file changed

+133
-44
lines changed

.github/workflows/package-build-ofed.yml

Lines changed: 133 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
---
2-
name: Build OFED packages
2+
name: Build IPA images
33
on:
44
workflow_dispatch:
55
inputs:
66
rocky9:
77
description: Build Rocky Linux 9
88
type: boolean
99
default: true
10+
ubuntu-jammy:
11+
description: Build Ubuntu 22.04 Jammy
12+
type: boolean
13+
default: true
1014
secrets:
1115
KAYOBE_VAULT_PASSWORD:
1216
required: true
@@ -22,8 +26,8 @@ env:
2226
KAYOBE_ENVIRONMENT: ci-builder
2327
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
2428
jobs:
25-
overcloud-ofed-packages:
26-
name: Build OFED packages
29+
ipa-image-build:
30+
name: Build IPA images
2731
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
2832
runs-on: arc-skc-host-image-builder-runner
2933
permissions: {}
@@ -42,18 +46,25 @@ jobs:
4246
with:
4347
path: src/kayobe-config
4448

49+
- name: Output image tag of the builder
50+
id: builder_image_tag
51+
run: |
52+
echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
53+
4554
- name: Determine OpenStack release
4655
id: openstack_release
4756
run: |
4857
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview)
4958
echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT
5059
51-
- name: Clone StackHPC Kayobe repository
52-
uses: actions/checkout@v4
53-
with:
54-
repository: stackhpc/kayobe
55-
ref: refs/heads/stackhpc/${{ steps.openstack_release.outputs.openstack_release }}
56-
path: src/kayobe
60+
- name: Generate IPA image tag
61+
id: ipa_image_tag
62+
run: |
63+
echo "ipa_image_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
64+
65+
- name: Display IPA image tag
66+
run: |
67+
echo "${{ steps.ipa_image_tag.outputs.ipa_image_tag }}"
5768
5869
- name: Install Kayobe
5970
run: |
@@ -62,7 +73,7 @@ jobs:
6273
python3 -m venv kayobe &&
6374
source kayobe/bin/activate &&
6475
pip install -U pip &&
65-
pip install ../src/kayobe
76+
pip install -r ../src/kayobe-config/requirements.txt
6677
6778
- name: Install terraform
6879
uses: hashicorp/setup-terraform@v2
@@ -82,32 +93,20 @@ jobs:
8293
EOF
8394
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
8495

85-
- name: Output image tag
86-
id: image_tag
87-
run: |
88-
echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
89-
90-
# Use the image override if set, otherwise use overcloud-os_distribution-os_release-tag
91-
- name: Output image name
92-
id: image_name
93-
run: |
94-
echo image_name=overcloud-rocky-9-${{ steps.image_tag.outputs.image_tag }} >> $GITHUB_OUTPUT
95-
9696
- name: Generate terraform.tfvars
9797
run: |
9898
cat << EOF > terraform.tfvars
9999
ssh_public_key = "id_rsa.pub"
100-
ssh_username = "cloud-user"
101-
aio_vm_name = "skc-ofed-builder"
102-
aio_vm_image = "${{ env.VM_IMAGE }}"
103-
aio_vm_flavor = "en1.medium"
100+
ssh_username = "ubuntu"
101+
aio_vm_name = "skc-ipa-image-builder"
102+
aio_vm_image = "Ubuntu-22.04"
103+
aio_vm_flavor = "en1.large"
104104
aio_vm_network = "stackhpc-ci"
105105
aio_vm_subnet = "stackhpc-ci"
106106
aio_vm_interface = "ens3"
107+
aio_vm_volume_size = 100
107108
EOF
108109
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
109-
env:
110-
VM_IMAGE: ${{ steps.image_name.outputs.image_name }}
111110

112111
- name: Terraform Plan
113112
run: terraform plan
@@ -179,70 +178,160 @@ jobs:
179178
source src/kayobe-config/kayobe-env --environment ci-builder &&
180179
kayobe control host bootstrap
181180
182-
- name: Run growroot playbook
181+
- name: Configure the seed host (Builder VM)
183182
run: |
184183
source venvs/kayobe/bin/activate &&
185184
source src/kayobe-config/kayobe-env --environment ci-builder &&
186-
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/growroot.yml
185+
kayobe seed host configure \
186+
-e seed_bootstrap_user=ubuntu \
187+
--skip-tags network,apt,docker,docker-registry
187188
env:
188189
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
189190

190-
- name: Configure the seed host (Builder VM)
191+
- name: Install dependencies
192+
run: |
193+
source venvs/kayobe/bin/activate &&
194+
source src/kayobe-config/kayobe-env --environment ci-builder &&
195+
kayobe seed host command run \
196+
--command "sudo apt update && sudo apt -y install gcc git libffi-dev python3-dev python-is-python3 python3-venv" --show-output
197+
env:
198+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
199+
200+
- name: Build a Ubuntu 22.04 Jammy IPA image
201+
id: build_ubuntu_jammy_ipa
202+
continue-on-error: true
191203
run: |
192204
source venvs/kayobe/bin/activate &&
193205
source src/kayobe-config/kayobe-env --environment ci-builder &&
194-
kayobe seed host configure --skip-tags network,docker
206+
kayobe overcloud deployment image build --force-rebuild \
207+
-e os_distribution="ubuntu" \
208+
-e os_release="jammy" \
209+
-e ipa_ci_builder_distribution="ubuntu"
195210
env:
196211
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
212+
if: inputs.ubuntu-jammy
197213

198-
- name: Run a distro-sync
214+
- name: Show last error logs
215+
continue-on-error: true
199216
run: |
200217
source venvs/kayobe/bin/activate &&
201218
source src/kayobe-config/kayobe-env --environment ci-builder &&
202-
kayobe seed host command run --become --command "dnf distro-sync --refresh"
219+
kayobe seed host command run --command "tail -200 /opt/kayobe/images/ipa/ipa.stdout" --show-output
203220
env:
204221
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
222+
if: steps.build_ubuntu_jammy_ipa.outcome == 'failure'
205223

206-
- name: Reset BLS entries on the seed host
224+
- name: Upload Ubuntu 22.04 Jammy IPA kernel image to Ark
207225
run: |
208226
source venvs/kayobe/bin/activate &&
209227
source src/kayobe-config/kayobe-env --environment ci-builder &&
210-
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/reset-bls-entries.yml \
211-
-e "reset_bls_host=ofed-builder"
228+
kayobe playbook run \
229+
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
230+
-e artifact_path=/opt/kayobe/images/ipa \
231+
-e artifact_type=ipa \
232+
-e artifact_tag=${{ steps.ipa_image_tag.outputs.ipa_image_tag }} \
233+
-e os_distribution="ubuntu" \
234+
-e os_release="jammy" \
235+
-e file_regex='*.kernel' \
236+
-e upload_checksum=true
212237
env:
213238
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
239+
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy_ipa.outcome == 'success'
214240

215-
- name: Disable noexec in /var/tmp
241+
- name: Upload Ubuntu 22.04 Jammy IPA ramdisk image to Ark
216242
run: |
217243
source venvs/kayobe/bin/activate &&
218244
source src/kayobe-config/kayobe-env --environment ci-builder &&
219-
kayobe seed host command run --become --command "sed -i 's/noexec,//g' /etc/fstab"
245+
kayobe playbook run \
246+
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
247+
-e artifact_path=/opt/kayobe/images/ipa \
248+
-e artifact_type=ipa \
249+
-e artifact_tag=${{ steps.ipa_image_tag.outputs.ipa_image_tag }} \
250+
-e os_distribution="ubuntu" \
251+
-e os_release="jammy" \
252+
-e file_regex='*.initramfs' \
253+
-e upload_checksum=true
220254
env:
221255
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
256+
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy_ipa.outcome == 'success'
222257

223-
- name: Reboot to apply the kernel update
258+
- name: Build a Rocky 9 IPA image
259+
id: build_rocky_9_ipa
260+
continue-on-error: true
224261
run: |
225262
source venvs/kayobe/bin/activate &&
226263
source src/kayobe-config/kayobe-env --environment ci-builder &&
227-
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/reboot.yml
264+
kayobe overcloud deployment image build --force-rebuild \
265+
-e os_distribution="rocky" \
266+
-e os_release="9" \
267+
-e ipa_ci_builder_distribution="rocky"
228268
env:
229269
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
270+
if: inputs.rocky9
230271

231-
- name: Run OFED builder playbook
272+
- name: Show last error logs
273+
continue-on-error: true
232274
run: |
233275
source venvs/kayobe/bin/activate &&
234276
source src/kayobe-config/kayobe-env --environment ci-builder &&
235-
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/build-ofed-rocky.yml
277+
kayobe seed host command run --command "tail -200 /opt/kayobe/images/ipa/ipa.stdout" --show-output
236278
env:
237279
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
280+
if: steps.build_rocky_9_ipa.outcome == 'failure'
238281

239-
- name: Run OFED upload playbook
282+
- name: Upload Rocky 9 IPA kernel image to Ark
240283
run: |
241284
source venvs/kayobe/bin/activate &&
242285
source src/kayobe-config/kayobe-env --environment ci-builder &&
243-
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/push-ofed.yml
286+
kayobe playbook run \
287+
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
288+
-e artifact_path=/opt/kayobe/images/ipa \
289+
-e artifact_type=ipa \
290+
-e artifact_tag=${{ steps.ipa_image_tag.outputs.ipa_image_tag }} \
291+
-e os_distribution="rocky" \
292+
-e os_release="9" \
293+
-e file_regex='*.kernel' \
294+
-e upload_checksum=true
244295
env:
245296
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
297+
if: inputs.rocky9 && steps.build_rocky_9_ipa.outcome == 'success'
298+
299+
- name: Upload Rocky 9 IPA ramdisk image to Ark
300+
run: |
301+
source venvs/kayobe/bin/activate &&
302+
source src/kayobe-config/kayobe-env --environment ci-builder &&
303+
kayobe playbook run \
304+
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
305+
-e artifact_path=/opt/kayobe/images/ipa \
306+
-e artifact_type=ipa \
307+
-e artifact_tag=${{ steps.ipa_image_tag.outputs.ipa_image_tag }} \
308+
-e os_distribution="rocky" \
309+
-e os_release="9" \
310+
-e file_regex='*.initramfs' \
311+
-e upload_checksum=true
312+
env:
313+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
314+
if: inputs.rocky9 && steps.build_rocky_9_ipa.outcome == 'success'
315+
316+
- name: Copy logs back
317+
continue-on-error: true
318+
run: |
319+
mkdir logs
320+
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/
321+
if: always()
322+
323+
- name: Upload logs artifact
324+
uses: actions/upload-artifact@v4
325+
with:
326+
name: Build logs
327+
path: ./logs
328+
329+
- name: Fail if the IPA image build failed
330+
run: |
331+
echo "Builds failed. See workflow artifacts for details." &&
332+
exit 1
333+
if: steps.build_rocky_9_ipa.outcome == 'failure' ||
334+
steps.build_ubuntu_jammy_ipa.outcome == 'failure'
246335

247336
- name: Destroy
248337
run: terraform destroy -auto-approve

0 commit comments

Comments
 (0)