Skip to content

Commit 6807b32

Browse files
committed
Test amphora image build
1 parent c964eec commit 6807b32

File tree

2 files changed

+31
-128
lines changed

2 files changed

+31
-128
lines changed

.github/workflows/overcloud-host-image-build.yml

Lines changed: 22 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
---
2-
name: Build overcloud host images
2+
name: Build Amphora image
33
on:
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
@@ -27,17 +18,11 @@ env:
2718
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
2819
jobs:
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
@@ -106,7 +92,7 @@ jobs:
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: 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

etc/kayobe/ansible/octavia-amphora-image-build.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
hosts: "{{ amphora_builder_group | default('seed') }}"
44
vars:
55
amphora_dib_upper_constraints_file: "{{ pip_upper_constraints_file }}"
6+
amphora_image_dest: "{{ image_cache_path }}/amphora-x64-haproxy-{{ openstack_release }}.qcow2"
67
tasks:
78
- name: Install EPEL
89
package:
@@ -15,21 +16,22 @@
1516
- name: Ensure packages are installed
1617
become: true
1718
vars:
19+
packages_common:
20+
- debootstrap
21+
- git
22+
- python3-venv
23+
- python3-diskimage-builder
1824
packages_for_os_family:
1925
RedHat:
20-
- debootstrap
2126
- qemu-img
22-
- git
2327
- e2fsprogs
2428
- policycoreutils-python-utils
2529
- yum-utils
2630
Debian:
27-
- debootstrap
2831
- qemu-utils
29-
- git
3032
- kpartx
3133
package:
32-
name: "{{ packages_for_os_family[ansible_facts.os_family] }}"
34+
name: "{{ packages_common + packages_for_os_family[ansible_facts.os_family] }}"
3335

3436
- name: Create a temporary directory
3537
tempfile:
@@ -40,7 +42,6 @@
4042
- name: Check whether the image cache directory exists
4143
stat:
4244
path: "{{ image_cache_path }}"
43-
get_md5: False
4445
get_checksum: False
4546
mime: False
4647
register: image_cache_stat
@@ -88,14 +89,14 @@
8889

8990
- name: Create the Amphora image
9091
shell:
91-
cmd: "source {{ venv_path }}/bin/activate && ./diskimage-create.sh -i ubuntu-minimal -s 3 -g {{ openstack_branch }} >> /var/log/octavia-amphora-image-build.log 2>&1"
92+
cmd: ". {{ venv_path }}/bin/activate && ./diskimage-create.sh -i ubuntu-minimal -s 3 -g {{ openstack_branch }} >> /var/log/octavia-amphora-image-build.log 2>&1"
9293
chdir: "{{ src_path }}/diskimage-create"
9394
changed_when: true
9495

9596
- name: Copy image to image store
9697
copy:
9798
src: "{{ src_path }}/diskimage-create/amphora-x64-haproxy.qcow2"
98-
dest: "{{ image_cache_path }}/amphora-x64-haproxy-{{ openstack_release }}.qcow2"
99+
dest: "{{ amphora_image_dest }}"
99100
remote_src: true
100101
always:
101102
- name: Remove temporary files

0 commit comments

Comments
 (0)