Skip to content

Commit cd52288

Browse files
committed
Merge stackhpc/wallaby into stackhpc/xena
2 parents 15134f7 + 8383728 commit cd52288

File tree

6 files changed

+90
-66
lines changed

6 files changed

+90
-66
lines changed

.github/workflows/stackhpc-container-image-build.yml

Lines changed: 88 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,83 @@ on:
1818
type: boolean
1919
required: false
2020
default: false
21-
distro:
22-
description: Container image OS distribution
23-
type: choice
21+
centos-stream-8:
22+
description: Build CentOS Stream 8 images?
23+
type: boolean
24+
required: false
25+
default: true
26+
ubuntu-focal:
27+
description: Build Ubuntu Focal 20.04 images?
28+
type: boolean
2429
required: false
25-
default: centos
26-
options:
27-
- centos
28-
- ubuntu
30+
default: true
31+
push:
32+
description: Whether to push images
33+
type: boolean
34+
required: false
35+
default: true
2936

3037
env:
3138
ANSIBLE_FORCE_COLOR: True
3239
jobs:
40+
generate-tag:
41+
name: Generate container image tag
42+
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
43+
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
44+
permissions: {}
45+
outputs:
46+
kolla_tag: ${{ steps.kolla_tag.outputs.kolla_tag }}
47+
matrix: ${{ steps.set-matrix.outputs.matrix }}
48+
openstack_release: ${{ steps.openstack_release.outputs.openstack_release }}
49+
steps:
50+
- name: Checkout
51+
uses: actions/checkout@v3
52+
53+
- name: Determine OpenStack release
54+
id: openstack_release
55+
run: |
56+
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' .gitreview)
57+
echo "openstack_release=${BRANCH}" | sed "s|stable/||" >> $GITHUB_OUTPUT
58+
59+
# Generate a tag to apply to all built container images.
60+
# Without this, each kayobe * container image build command would use a different tag.
61+
- name: Generate container image tag
62+
id: kolla_tag
63+
run: |
64+
echo "kolla_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
65+
66+
# Dynamically define job matrix.
67+
# We need a separate matrix entry for each distribution, when the relevant input is true.
68+
# https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional
69+
- name: Generate build matrix
70+
id: set-matrix
71+
run: |
72+
comma=""
73+
echo -n "matrix={\"distro\": [" >> $GITHUB_OUTPUT
74+
if [[ ${{ inputs.centos-stream-8 }} == 'true' ]]; then
75+
echo -n "$comma\"centos\"" >> $GITHUB_OUTPUT
76+
comma=", "
77+
fi
78+
if [[ ${{ inputs.ubuntu-focal }} == 'true' ]]; then
79+
echo -n "$comma\"ubuntu\"" >> $GITHUB_OUTPUT
80+
comma=", "
81+
fi
82+
echo "]}" >> $GITHUB_OUTPUT
83+
84+
- name: Display container image tag
85+
run: |
86+
echo "${{ steps.kolla_tag.outputs.kolla_tag }}"
87+
3388
container-image-build:
3489
name: Build Kolla container images
3590
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
3691
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
3792
timeout-minutes: 720
93+
permissions: {}
94+
strategy:
95+
matrix: ${{ fromJson(needs.generate-tag.outputs.matrix) }}
96+
needs:
97+
- generate-tag
3898
steps:
3999
- uses: actions/checkout@v3
40100
with:
@@ -44,7 +104,7 @@ jobs:
44104
uses: actions/checkout@v3
45105
with:
46106
repository: stackhpc/kayobe
47-
ref: refs/heads/stackhpc/xena
107+
ref: refs/heads/stackhpc/${{ needs.generate-tag.outputs.openstack_release }}
48108
path: src/kayobe
49109

50110
# FIXME: Failed in kolla-ansible : Ensure the latest version of pip is installed
@@ -100,57 +160,43 @@ jobs:
100160

101161
- name: Build and push kolla overcloud images
102162
run: |
163+
args="${{ github.event.inputs.regexes }}"
164+
args="$args -e kolla_base_distro=${{ matrix.distro }}"
165+
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
166+
if ${{ inputs.push }} == 'true'; then
167+
args="$args --push"
168+
fi
103169
source venvs/kayobe/bin/activate &&
104170
source src/kayobe-config/kayobe-env --environment ci-builder &&
105-
kayobe overcloud container image build ${{ github.event.inputs.regexes }} --push -e kolla_base_distro=${{ inputs.distro }}
171+
kayobe overcloud container image build $args
106172
env:
107173
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
108174
if: github.event.inputs.overcloud == 'true'
109175

110-
- name: Display the overcloud container image tag
111-
run: |
112-
echo "$(cat ~/kolla_tag)"
113-
if: github.event.inputs.overcloud == 'true'
114-
115-
- name: Get built overcloud container images
116-
run: |
117-
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > overcloud-container-images
118-
if: github.event.inputs.overcloud == 'true'
119-
120-
- name: Upload overcloud-container-images artifact
121-
uses: actions/upload-artifact@v3
122-
with:
123-
name: Overcloud container images
124-
path: overcloud-container-images
125-
retention-days: 7
126-
if: github.event.inputs.overcloud == 'true'
127-
128176
- name: Build and push kolla seed images
129177
run: |
178+
args="kolla_base_distro=${{ matrix.distro }}"
179+
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
180+
if ${{ inputs.push }} == 'true'; then
181+
args="$args --push"
182+
fi
130183
source venvs/kayobe/bin/activate &&
131184
source src/kayobe-config/kayobe-env --environment ci-builder &&
132-
kayobe seed container image build --push -e kolla_base_distro=${{ inputs.distro }}
185+
kayobe seed container image build $args
133186
env:
134187
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
135188
if: github.event.inputs.seed == 'true'
136189

137-
- name: Display the seed container image tag
138-
run: |
139-
echo "$(cat ~/kolla_tag)"
140-
if: github.event.inputs.seed == 'true'
141-
142-
- name: Get built seed container images
190+
- name: Get built container images
143191
run: |
144-
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > seed-container-images
145-
if: github.event.inputs.seed == 'true'
192+
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/${{ matrix.distro }}-*:${{ needs.generate-tag.outputs.kolla_tag }}" > ${{ matrix.distro }}-container-images
146193
147-
- name: Upload seed-container-images artifact
194+
- name: Upload container images artifact
148195
uses: actions/upload-artifact@v3
149196
with:
150-
name: Seed container images
151-
path: seed-container-images
197+
name: ${{ matrix.distro }} container images
198+
path: ${{ matrix.distro }}-container-images
152199
retention-days: 7
153-
if: github.event.inputs.seed == 'true'
154200

155201
- name: Prune local Kolla container images over 1 week old
156202
run: |
@@ -160,8 +206,9 @@ jobs:
160206
name: Trigger container image repository sync
161207
needs:
162208
- container-image-build
163-
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
209+
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push
164210
runs-on: ubuntu-latest
211+
permissions: {}
165212
steps:
166213
# NOTE(mgoddard): Trigger another CI workflow in the
167214
# stackhpc-release-train repository.

.github/workflows/stackhpc-promote.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ jobs:
1010
name: Trigger package repository promotion
1111
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
1212
runs-on: ubuntu-latest
13+
permissions: {}
1314
steps:
1415
# NOTE(mgoddard): Trigger another CI workflow in the
1516
# stackhpc-release-train repository.

doc/source/contributor/environments/ci-builder.rst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ At this point you are ready to build and push some container images.
105105
kayobe seed container image build --push
106106
kayobe overcloud container image build --push
107107
108-
The container images are tagged as |current_release|-<datetime>. This Kayobe
109-
configuration includes a hook that writes the tag to ``~/kolla_tag``, since
110-
it is not always simple to determine which tag was last applied to built
111-
images.
108+
The container images are tagged as |current_release|-<datetime>.
112109

113110
To use the new images, edit
114111
``~/src/kayobe-config/etc/kayobe/kolla.yml`` to set the above

etc/kayobe/ansible/write-kolla-tag.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

etc/kayobe/hooks/overcloud-container-image-build/post.d/50-write-kolla-tag.yml

Lines changed: 0 additions & 1 deletion
This file was deleted.

etc/kayobe/hooks/seed-container-image-build/post.d/50-write-kolla-tag.yml

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)