Skip to content

Commit 9bc398e

Browse files
committed
CI: Split tag generation into a separate job
This is to prepare for introducing multiple parallel jobs that would be resulting in set of images sharing the same tag. A new create-tag job is therefore created and can be referenced as a dependency in the 'needs' lists.
1 parent 4effb00 commit 9bc398e

File tree

1 file changed

+49
-31
lines changed

1 file changed

+49
-31
lines changed

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

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -45,32 +45,18 @@ jobs:
4545
uses: ./.github/workflows/runner-selector.yml
4646
with:
4747
runner_env: ${{ inputs.runner_env }}
48-
overcloud-host-image-build:
49-
name: Build overcloud host images
48+
create-tag:
49+
name: Create a tag to be added to resulting images
5050
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
5151
environment: ${{ inputs.runner_env }}
5252
runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }}
5353
needs:
5454
- runner-selection
5555
permissions:
5656
actions: write
57+
outputs:
58+
host_image_tag: ${{ steps.host_image_tag.outputs.host_image_tag }}
5759
steps:
58-
- name: Validate inputs
59-
run: |
60-
if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.rocky10 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
61-
echo "At least one distribution must be selected"
62-
exit 1
63-
fi
64-
65-
- name: Install Package
66-
uses: ConorMacBride/install-package@main
67-
with:
68-
apt: git unzip nodejs python3-pip python3-venv openssh-server openssh-client jq gh
69-
70-
- name: Start the SSH service
71-
run: |
72-
sudo /etc/init.d/ssh start
73-
7460
- name: Checkout
7561
uses: actions/checkout@v6
7662
with:
@@ -88,9 +74,41 @@ jobs:
8874
run: |
8975
echo "host_image_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
9076
77+
overcloud-host-image-build:
78+
name: Build overcloud host images
79+
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
80+
environment: ${{ inputs.runner_env }}
81+
runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }}
82+
needs:
83+
- runner-selection
84+
- create-tag
85+
permissions:
86+
actions: write
87+
steps:
88+
- name: Validate inputs
89+
run: |
90+
if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.rocky10 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
91+
echo "At least one distribution must be selected"
92+
exit 1
93+
fi
94+
9195
- name: Display overcloud host image tag
9296
run: |
93-
echo "${{ steps.host_image_tag.outputs.host_image_tag }}"
97+
echo "${{ needs.create-tag.outputs.host_image_tag }}"
98+
99+
- name: Checkout
100+
uses: actions/checkout@v6
101+
with:
102+
path: src/kayobe-config
103+
104+
- name: Install Package
105+
uses: ConorMacBride/install-package@main
106+
with:
107+
apt: git unzip nodejs python3-pip python3-venv openssh-server openssh-client jq gh
108+
109+
- name: Start the SSH service
110+
run: |
111+
sudo /etc/init.d/ssh start
94112
95113
- name: Install Kayobe
96114
run: |
@@ -259,7 +277,7 @@ jobs:
259277
kayobe playbook run \
260278
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
261279
-e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \
262-
-e image_name=overcloud-rocky-9-${{ steps.host_image_tag.outputs.host_image_tag }}
280+
-e image_name=overcloud-rocky-9-${{ needs.create-tag.outputs.host_image_tag }}
263281
env:
264282
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }}
265283
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
@@ -273,7 +291,7 @@ jobs:
273291
kayobe playbook run \
274292
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
275293
-e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \
276-
-e image_name=overcloud-rocky-9-${{ steps.host_image_tag.outputs.host_image_tag }}
294+
-e image_name=overcloud-rocky-9-${{ needs.create-tag.outputs.host_image_tag }}
277295
env:
278296
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML_OTHER_CLOUD }}
279297
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID_OTHER_CLOUD }}
@@ -287,7 +305,7 @@ jobs:
287305
kayobe playbook run \
288306
src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-upload.yml \
289307
-e artifact_path=/opt/kayobe/images/overcloud-rocky-9 \
290-
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
308+
-e artifact_tag=${{ needs.create-tag.outputs.host_image_tag }} \
291309
-e artifact_type="kayobe-images" \
292310
-e file_regex="*.qcow2" \
293311
-e os_distribution="rocky" \
@@ -327,7 +345,7 @@ jobs:
327345
kayobe playbook run \
328346
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
329347
-e local_image_path="/opt/kayobe/images/overcloud-rocky-10/overcloud-rocky-10.qcow2" \
330-
-e image_name=overcloud-rocky-10-${{ steps.host_image_tag.outputs.host_image_tag }}
348+
-e image_name=overcloud-rocky-10-${{ needs.create-tag.outputs.host_image_tag }}
331349
env:
332350
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }}
333351
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
@@ -341,7 +359,7 @@ jobs:
341359
kayobe playbook run \
342360
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
343361
-e local_image_path="/opt/kayobe/images/overcloud-rocky-10/overcloud-rocky-10.qcow2" \
344-
-e image_name=overcloud-rocky-10-${{ steps.host_image_tag.outputs.host_image_tag }}
362+
-e image_name=overcloud-rocky-10-${{ needs.create-tag.outputs.host_image_tag }}
345363
env:
346364
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML_OTHER_CLOUD }}
347365
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID_OTHER_CLOUD }}
@@ -355,7 +373,7 @@ jobs:
355373
kayobe playbook run \
356374
src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-upload.yml \
357375
-e artifact_path=/opt/kayobe/images/overcloud-rocky-10 \
358-
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
376+
-e artifact_tag=${{ needs.create-tag.outputs.host_image_tag }} \
359377
-e artifact_type="kayobe-images" \
360378
-e file_regex="*.qcow2" \
361379
-e os_distribution="rocky" \
@@ -395,7 +413,7 @@ jobs:
395413
kayobe playbook run \
396414
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
397415
-e local_image_path="/opt/kayobe/images/overcloud-ubuntu-noble/overcloud-ubuntu-noble.qcow2" \
398-
-e image_name=overcloud-ubuntu-noble-${{ steps.host_image_tag.outputs.host_image_tag }}
416+
-e image_name=overcloud-ubuntu-noble-${{ needs.create-tag.outputs.host_image_tag }}
399417
env:
400418
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }}
401419
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
@@ -409,7 +427,7 @@ jobs:
409427
kayobe playbook run \
410428
src/kayobe-config/etc/kayobe/ansible/tools/openstack-host-image-upload.yml \
411429
-e local_image_path="/opt/kayobe/images/overcloud-ubuntu-noble/overcloud-ubuntu-noble.qcow2" \
412-
-e image_name=overcloud-ubuntu-noble-${{ steps.host_image_tag.outputs.host_image_tag }}
430+
-e image_name=overcloud-ubuntu-noble-${{ needs.create-tag.outputs.host_image_tag }}
413431
env:
414432
CLOUDS_YAML: ${{ secrets.CLOUDS_YAML_OTHER_CLOUD }}
415433
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID_OTHER_CLOUD }}
@@ -423,7 +441,7 @@ jobs:
423441
kayobe playbook run \
424442
src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-upload.yml \
425443
-e artifact_path=/opt/kayobe/images/overcloud-ubuntu-noble \
426-
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
444+
-e artifact_tag=${{ needs.create-tag.outputs.host_image_tag }} \
427445
-e artifact_type="kayobe-images" \
428446
-e file_regex="*.qcow2" \
429447
-e os_distribution="ubuntu" \
@@ -470,9 +488,9 @@ jobs:
470488
update-overcloud-host-image-tags.yml \
471489
--repo stackhpc/stackhpc-kayobe-config \
472490
--ref $BRANCH_NAME \
473-
$(if [[ "${{ inputs.rocky9 }}" == "true" ]]; then echo "-f rocky9_tag=${{ steps.host_image_tag.outputs.host_image_tag }}"; fi) \
474-
$(if [[ "${{ inputs.rocky10 }}" == "true" ]]; then echo "-f rocky10_tag=${{ steps.host_image_tag.outputs.host_image_tag }}"; fi) \
475-
$(if [[ "${{ inputs.ubuntu-noble }}" == "true" ]]; then echo "-f ubuntu_noble_tag=${{ steps.host_image_tag.outputs.host_image_tag }}"; fi)
491+
$(if [[ "${{ inputs.rocky9 }}" == "true" ]]; then echo "-f rocky9_tag=${{ needs.create-tag.outputs.host_image_tag }}"; fi) \
492+
$(if [[ "${{ inputs.rocky10 }}" == "true" ]]; then echo "-f rocky10_tag=${{ needs.create-tag.outputs.host_image_tag }}"; fi) \
493+
$(if [[ "${{ inputs.ubuntu-noble }}" == "true" ]]; then echo "-f ubuntu_noble_tag=${{ needs.create-tag.outputs.host_image_tag }}"; fi)
476494
env:
477495
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
478496
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}

0 commit comments

Comments
 (0)