Skip to content

Commit 7d9ec5c

Browse files
committed
Test amphora image build
1 parent d472c33 commit 7d9ec5c

File tree

1 file changed

+37
-96
lines changed

1 file changed

+37
-96
lines changed

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

Lines changed: 37 additions & 96 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,142 +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 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-image-upload.yml \
243-
-e image_path=/opt/kayobe/images/overcloud-rocky-9 \
244-
-e image_tag=${{ steps.image_tag.outputs.image_tag }} \
245-
-e os_distribution="rocky" \
246-
-e os_release="9"
247-
env:
248-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
249-
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
250227
251-
- name: Upload Rocky Linux 9 overcloud host image to Dev Cloud
228+
- name: Install Amphora image build dependencies
252229
run: |
253230
source venvs/kayobe/bin/activate &&
254231
source src/kayobe-config/kayobe-env --environment ci-builder &&
255-
kayobe playbook run \
256-
src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \
257-
-e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \
258-
-e image_name=overcloud-rocky-9-${{ steps.image_tag.outputs.image_tag }}
259-
env:
260-
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }}
261-
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
262-
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
263-
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
264234
265-
- name: Build an Ubuntu Jammy 22.04 overcloud host image
266-
id: build_ubuntu_jammy
267-
continue-on-error: true
235+
- name: Create Amphora image
236+
id: build_amphora
268237
run: |
269238
source venvs/kayobe/bin/activate &&
270239
source src/kayobe-config/kayobe-env --environment ci-builder &&
271-
kayobe overcloud host image build --force-rebuild \
272-
-e os_distribution="ubuntu" \
273-
-e os_release="jammy" \
274-
-e stackhpc_overcloud_dib_name=overcloud-ubuntu-jammy
275-
env:
276-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
277-
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
278242
279243
- name: Show last error logs
280244
continue-on-error: true
281245
run: |
282246
source venvs/kayobe/bin/activate &&
283247
source src/kayobe-config/kayobe-env --environment ci-builder &&
284-
kayobe seed host command run --command "tail -200 /opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.stdout" --show-output
285-
env:
286-
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
287-
if: steps.build_ubuntu_jammy.outcome == 'failure'
288-
289-
- name: Upload Ubuntu Jammy 22.04 overcloud host image to Ark
290-
run: |
291-
source venvs/kayobe/bin/activate &&
292-
source src/kayobe-config/kayobe-env --environment ci-builder &&
293-
kayobe playbook run \
294-
src/kayobe-config/etc/kayobe/ansible/pulp-image-upload.yml \
295-
-e image_path=/opt/kayobe/images/overcloud-ubuntu-jammy \
296-
-e image_tag=${{ steps.image_tag.outputs.image_tag }} \
297-
-e os_distribution="ubuntu" \
298-
-e os_release="jammy"
248+
kayobe seed host command run --command "tail -200 ~/octavia-amphora-image-build.log" --show-output
299249
env:
300250
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
301-
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'
251+
if: steps.build_amphora.outcome == 'failure'
302252

303-
- name: Upload Ubuntu Jammy overcloud host image to Dev Cloud
253+
- name: Copy Amphora image back
254+
continue-on-error: true
304255
run: |
305-
source venvs/kayobe/bin/activate &&
306-
source src/kayobe-config/kayobe-env --environment ci-builder &&
307-
kayobe playbook run \
308-
src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \
309-
-e local_image_path="/opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.qcow2" \
310-
-e image_name=overcloud-ubuntu-jammy-${{ steps.image_tag.outputs.image_tag }}
311-
env:
312-
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }}
313-
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
314-
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
315-
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'
316259

317-
- name: Copy logs back
260+
- name: Copy logback
318261
continue-on-error: true
319262
run: |
320-
mkdir logs
321-
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/
322-
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
323265
if: always()
324266

325267
- name: Fail if any overcloud host image builds failed
326268
run: |
327269
echo "Builds failed. See workflow artifacts for details." &&
328270
exit 1
329-
if: steps.build_rocky_9.outcome == 'failure' ||
330-
steps.build_ubuntu_jammy.outcome == 'failure'
271+
if: steps.build_amphora.outcome == 'failure'
331272

332-
- name: Upload logs artifact
273+
- name: Upload logs & image artifact
333274
uses: actions/upload-artifact@v4
334275
with:
335-
name: Build logs
336-
path: ./logs
276+
name: Build-result
277+
path: ./artifact
337278
if: always()
338279

339280
- name: Destroy

0 commit comments

Comments
 (0)