11
11
- SMS
12
12
- ARCUS
13
13
schedule :
14
- - cron : ' 0 0 * * *' # Run at midnight
14
+ - cron : ' 0 0 * * *' # Run at midnight on default branch
15
15
16
16
jobs :
17
17
openstack :
18
18
name : openstack-imagebuild
19
19
concurrency :
20
- group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os_version }}-${{ matrix. build }} # to branch/PR + OS + build
20
+ group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.build.image_name }} # to branch/PR + OS
21
21
cancel-in-progress : true
22
22
runs-on : ubuntu-22.04
23
23
strategy :
24
24
fail-fast : false # allow other matrix jobs to continue even if one fails
25
25
matrix : # build RL8, RL9
26
- os_version :
27
- - RL8
28
- - RL9
29
26
build :
30
- - openstack.rocky-latest
27
+ - image_name : rocky-latest-RL8
28
+ source_image_name : Rocky-8-GenericCloud-Base-8.9-20231119.0.x86_64.qcow2
29
+ inventory_groups : update
30
+ - image_name : rocky-latest-RL9
31
+ source_image_name : Rocky-9-GenericCloud-Base-9.4-20240523.0.x86_64.qcow2
32
+ inventory_groups : update
31
33
env :
32
34
ANSIBLE_FORCE_COLOR : True
33
35
OS_CLOUD : openstack
34
36
CI_CLOUD : ${{ github.event.inputs.ci_cloud || vars.CI_CLOUD }}
35
- SOURCE_IMAGES_MAP : |
36
- {
37
- "RL8": "Rocky-8-GenericCloud-Base-8.9-20231119.0.x86_64.qcow2",
38
- "RL9": "Rocky-9-GenericCloud-Base-9.4-20240523.0.x86_64.qcow2"
39
- }
40
37
ARK_PASSWORD : ${{ secrets.ARK_PASSWORD }}
41
38
LEAFCLOUD_PULP_PASSWORD : ${{ secrets.LEAFCLOUD_PULP_PASSWORD }}
42
39
@@ -84,15 +81,12 @@ jobs:
84
81
85
82
PACKER_LOG=1 packer build \
86
83
-on-error=${{ vars.PACKER_ON_ERROR }} \
87
- -only=${{ matrix.build }} \
88
84
-var-file=$PKR_VAR_environment_root/${{ env.CI_CLOUD }}.pkrvars.hcl \
89
- -var "source_image_name=${{ env.SOURCE_IMAGE }}" \
85
+ -var "source_image_name=${{ matrix.build.source_image_name }}" \
86
+ -var "image_name=${{ matrix.build.image_name }}" \
87
+ -var "inventory_groups=${{ matrix.build.inventory_groups }}" \
90
88
openstack.pkr.hcl
91
89
92
- env :
93
- PKR_VAR_os_version : ${{ matrix.os_version }}
94
- SOURCE_IMAGE : ${{ fromJSON(env.SOURCE_IMAGES_MAP)[matrix.os_version] }}
95
-
96
90
- name : Get created image names from manifest
97
91
id : manifest
98
92
run : |
@@ -126,7 +120,7 @@ jobs:
126
120
name : upload-nightly-targets
127
121
needs : openstack
128
122
concurrency :
129
- group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os_version }}-${{ matrix.image }}-${{ matrix.target_cloud }}
123
+ group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.build.image_name }}-${{ matrix.target_cloud }}
130
124
cancel-in-progress : true
131
125
runs-on : ubuntu-22.04
132
126
strategy :
@@ -136,18 +130,15 @@ jobs:
136
130
- LEAFCLOUD
137
131
- SMS
138
132
- ARCUS
139
- os_version :
140
- - RL8
141
- - RL9
142
- image :
143
- - rocky-latest
133
+ build :
134
+ - image_name : rocky-latest-RL8
135
+ - image_name : rocky-latest-RL9
144
136
exclude :
145
137
- target_cloud : LEAFCLOUD
146
138
env :
147
139
OS_CLOUD : openstack
148
140
SOURCE_CLOUD : ${{ github.event.inputs.ci_cloud || vars.CI_CLOUD }}
149
141
TARGET_CLOUD : ${{ matrix.target_cloud }}
150
- IMAGE_NAME : " ${{ matrix.image }}-${{ matrix.os_version }}"
151
142
steps :
152
143
- uses : actions/checkout@v2
153
144
@@ -162,42 +153,37 @@ jobs:
162
153
. venv/bin/activate
163
154
pip install -U pip
164
155
pip install $(grep -o 'python-openstackclient[><=0-9\.]*' requirements.txt)
165
- shell : bash
166
156
167
157
- name : Write clouds.yaml
168
158
run : |
169
159
mkdir -p ~/.config/openstack/
170
160
echo "${{ secrets[format('{0}_CLOUDS_YAML', env.SOURCE_CLOUD)] }}" > ~/.config/openstack/source_clouds.yaml
171
161
echo "${{ secrets[format('{0}_CLOUDS_YAML', env.TARGET_CLOUD)] }}" > ~/.config/openstack/target_clouds.yaml
172
- shell : bash
173
162
174
163
- name : Download source image
175
164
run : |
176
165
. venv/bin/activate
177
166
export OS_CLIENT_CONFIG_FILE=~/.config/openstack/source_clouds.yaml
178
- openstack image save --file ${{ env.IMAGE_NAME }} ${{ env.IMAGE_NAME }}
179
- shell : bash
167
+ openstack image save --file ${{ matrix.build.image_name }} ${{ matrix.build.image_name }}
180
168
181
169
- name : Upload to target cloud
182
170
run : |
183
171
. venv/bin/activate
184
172
export OS_CLIENT_CONFIG_FILE=~/.config/openstack/target_clouds.yaml
185
173
186
- openstack image create "${{ env.IMAGE_NAME }}" \
187
- --file "${{ env.IMAGE_NAME }}" \
174
+ openstack image create "${{ matrix.build.image_name }}" \
175
+ --file "${{ matrix.build.image_name }}" \
188
176
--disk-format qcow2 \
189
- shell : bash
190
177
191
178
- name : Delete old latest image from target cloud
192
179
run : |
193
180
. venv/bin/activate
194
181
export OS_CLIENT_CONFIG_FILE=~/.config/openstack/target_clouds.yaml
195
182
196
- IMAGE_COUNT=$(openstack image list --name ${{ env.IMAGE_NAME }} -f value -c ID | wc -l)
183
+ IMAGE_COUNT=$(openstack image list --name ${{ matrix.build.image_name }} -f value -c ID | wc -l)
197
184
if [ "$IMAGE_COUNT" -gt 1 ]; then
198
- OLD_IMAGE_ID=$(openstack image list --sort created_at:asc --name "${{ env.IMAGE_NAME }}" -f value -c ID | head -n 1)
185
+ OLD_IMAGE_ID=$(openstack image list --sort created_at:asc --name "${{ matrix.build.image_name }}" -f value -c ID | head -n 1)
199
186
openstack image delete "$OLD_IMAGE_ID"
200
187
else
201
188
echo "Only one image exists, skipping deletion."
202
189
fi
203
- shell : bash
0 commit comments