Skip to content

Commit ec81ea5

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

File tree

1 file changed

+37
-100
lines changed

1 file changed

+37
-100
lines changed

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

Lines changed: 37 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
name: Build overcloud host images
2+
name: Build Amphora image
33
on:
44
workflow_dispatch:
55
inputs:
@@ -27,17 +27,11 @@ env:
2727
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
2828
jobs:
2929
overcloud-host-image-build:
30-
name: Build overcloud host images
30+
name: Build Amphora image
3131
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
3232
runs-on: arc-skc-host-image-builder-runner
3333
permissions: {}
3434
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
4135

4236
- name: Install Package
4337
uses: ConorMacBride/install-package@main
@@ -62,6 +56,7 @@ jobs:
6256
id: openstack_release
6357
run: |
6458
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview)
59+
echo "BRANCH=$BRANCH" >> $GITHUB_OUTPUT
6560
echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT
6661
6762
# Generate a tag to apply to all built overcloud host images.
@@ -198,146 +193,88 @@ jobs:
198193
source venvs/kayobe/bin/activate &&
199194
source src/kayobe-config/kayobe-env --environment ci-builder &&
200195
kayobe seed host command run \
201-
--command "sudo apt update && sudo apt -y install gcc git libffi-dev python3-dev python-is-python3 python3-venv" --show-output
196+
--command "sudo apt update && sudo apt -y install gcc git libffi-dev python3-dev python-is-python3 python3-venv python3-diskimage-builder pip debootstrap qemu-utils kpartx" --show-output
202197
env:
203198
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
204199

205-
- name: Create bifrost_httpboot Docker volume
200+
- name: Clone Octavia source code
206201
run: |
207202
source venvs/kayobe/bin/activate &&
208203
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 }}
204+
kayobe seed host command run \
205+
--command "git clone https://opendev.org/openstack/octavia -b ${{ steps.openstack_release.outputs.BRANCH }} ~/octavia" --show-output
212206
213-
- name: Build a Rocky Linux 9 overcloud host image
214-
id: build_rocky_9
215-
continue-on-error: true
207+
- name: Install diskimage-builder
216208
run: |
217209
source venvs/kayobe/bin/activate &&
218210
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
211+
kayobe seed host command run \
212+
--command "pip install diskimage-builder" --show-output
226213
227-
- name: Show last error logs
228-
continue-on-error: true
214+
- name: Clone diskimage-builder source code
229215
run: |
230216
source venvs/kayobe/bin/activate &&
231217
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'
218+
kayobe seed host command run \
219+
--command "git clone https://opendev.org/openstack/diskimage-builder ~/diskimage-builder" --show-output
236220
237-
- name: Upload Rocky Linux 9 overcloud host image to Ark
221+
- name: Create build log file
238222
run: |
239223
source venvs/kayobe/bin/activate &&
240224
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"
249-
env:
250-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
251-
if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success'
225+
kayobe seed host command run \
226+
--command "touch ~/octavia-amphora-image-build.log" --show-output
252227
253-
- name: Upload Rocky Linux 9 overcloud host image to Dev Cloud
228+
- name: Install Amphora image build dependencies
254229
run: |
255230
source venvs/kayobe/bin/activate &&
256231
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'
232+
kayobe seed host command run \
233+
--command "pip install -r ~/octavia/diskimage-create/requirements.txt" --show-output
266234
267-
- name: Build an Ubuntu Jammy 22.04 overcloud host image
268-
id: build_ubuntu_jammy
269-
continue-on-error: true
235+
- name: Create Amphora image
236+
id: build_amphora
270237
run: |
271238
source venvs/kayobe/bin/activate &&
272239
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
240+
kayobe seed host command run \
241+
--command "~/octavia/diskimage-create/diskimage-create.sh -i ubuntu-minimal -s 3 -t qcow2 -o ~/amphora-x64-haproxy.qcow2 -g ${{ steps.openstack_release.outputs.BRANCH }} -w ~/octavia/diskimage-create/ >> ~/octavia-amphora-image-build.log 2>&1" --show-output
280242
281243
- name: Show last error logs
282244
continue-on-error: true
283245
run: |
284246
source venvs/kayobe/bin/activate &&
285247
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"
248+
kayobe seed host command run --command "tail -200 ~/octavia-amphora-image-build.log" --show-output
303249
env:
304250
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
305-
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'
251+
if: steps.build_amphora.outcome == 'failure'
306252

307-
- name: Upload Ubuntu Jammy overcloud host image to Dev Cloud
253+
- name: Copy Amphora image back
254+
continue-on-error: true
308255
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'
256+
mkdir artifact
257+
scp stack@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/amphora-x64-haproxy.qcow2 ./artifact
258+
if: steps.build_amphora.outcome == 'success'
320259

321-
- name: Copy logs back
260+
- name: Copy logback
322261
continue-on-error: true
323262
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
263+
mkdir artifact
264+
scp stack@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/octavia-amphora-image-build.log ./artifact
327265
if: always()
328266

329267
- name: Fail if any overcloud host image builds failed
330268
run: |
331269
echo "Builds failed. See workflow artifacts for details." &&
332270
exit 1
333-
if: steps.build_rocky_9.outcome == 'failure' ||
334-
steps.build_ubuntu_jammy.outcome == 'failure'
271+
if: steps.build_amphora.outcome == 'failure'
335272

336-
- name: Upload logs artifact
273+
- name: Upload logs & image artifact
337274
uses: actions/upload-artifact@v4
338275
with:
339-
name: Build logs
340-
path: ./logs
276+
name: Build-result
277+
path: ./artifact
341278
if: always()
342279

343280
- name: Destroy

0 commit comments

Comments
 (0)