Skip to content

Commit c18186b

Browse files
committed
Test amphora image build
1 parent c964eec commit c18186b

File tree

2 files changed

+35
-123
lines changed

2 files changed

+35
-123
lines changed

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

Lines changed: 26 additions & 115 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,67 @@ jobs:
202188
env:
203189
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
204190

205-
- name: Create bifrost_httpboot Docker volume
206-
run: |
207-
source venvs/kayobe/bin/activate &&
208-
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
210-
env:
211-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
212-
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-
- name: Show last error logs
228-
continue-on-error: true
229-
run: |
230-
source venvs/kayobe/bin/activate &&
231-
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
233-
env:
234-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
235-
if: steps.build_rocky_9.outcome == 'failure'
236-
237-
- name: Upload Rocky Linux 9 overcloud host image to Ark
191+
- name: Create amphora image output directory
238192
run: |
239193
source venvs/kayobe/bin/activate &&
240194
source src/kayobe-config/kayobe-env --environment ci-builder &&
241-
kayobe playbook run \
242-
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
243-
-e artifact_path=/opt/kayobe/images/overcloud-rocky-9 \
244-
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
245-
-e artifact_type="kayobe-images" \
246-
-e file_regex="*.qcow2" \
247-
-e os_distribution="rocky" \
248-
-e os_release="9"
195+
kayobe seed host command run \
196+
--command "mkdir -p /opt/kayobe/images/amphora" --show-output
249197
env:
250198
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
251-
if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success'
252199

253-
- name: Upload Rocky Linux 9 overcloud host image to Dev Cloud
200+
- name: Build Octavia Amphora image
201+
id: build_amphora
254202
run: |
255203
source venvs/kayobe/bin/activate &&
256204
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
205+
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/octavia-amphora-image-build.yml -e amphora_image_dest=/opt/kayobe/images/amphora/amphora-x64-haproxy.qcow2
277206
env:
278207
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
279-
if: inputs.ubuntu-jammy
280208

281209
- name: Show last error logs
282210
continue-on-error: true
283211
run: |
284212
source venvs/kayobe/bin/activate &&
285213
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
214+
kayobe seed host command run --command "tail -200 /var/log/octavia-amphora-image-build.log" --show-output
287215
env:
288216
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
289-
if: steps.build_ubuntu_jammy.outcome == 'failure'
217+
if: steps.build_amphora.outcome == 'failure'
290218

291-
- name: Upload Ubuntu Jammy 22.04 overcloud host image to Ark
219+
- name: Upload Octavia Amphora image to Ark
292220
run: |
293221
source venvs/kayobe/bin/activate &&
294222
source src/kayobe-config/kayobe-env --environment ci-builder &&
295223
kayobe playbook run \
296224
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" \
225+
-e artifact_path=/opt/kayobe/images/amphora \
226+
-e artifact_tag=${{ steps.image_tag.outputs.image_tag }} \
300227
-e file_regex="*.qcow2" \
301-
-e os_distribution="ubuntu" \
302-
-e os_release="jammy"
228+
-e repository_name="amphora-${{ steps.openstack_release.outputs.openstack_release }}" \
229+
-e pulp_base_path="amphora/${{ steps.openstack_release.outputs.openstack_release }}"
303230
env:
304231
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'
232+
if: steps.build_amphora.outcome == 'success'
320233

321-
- name: Copy logs back
234+
- name: Copy logback
322235
continue-on-error: true
323236
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
237+
mkdir artifact
238+
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
327239
if: always()
328240

329241
- name: Fail if any overcloud host image builds failed
330242
run: |
331243
echo "Builds failed. See workflow artifacts for details." &&
332244
exit 1
333-
if: steps.build_rocky_9.outcome == 'failure' ||
334-
steps.build_ubuntu_jammy.outcome == 'failure'
245+
if: steps.build_amphora.outcome == 'failure'
335246

336-
- name: Upload logs artifact
247+
- name: Upload logs & image artifact
337248
uses: actions/upload-artifact@v4
338249
with:
339-
name: Build logs
340-
path: ./logs
250+
name: amphora-image-build-log
251+
path: ./artifact
341252
if: always()
342253

343254
- 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)