55
55
description : Whether to run the workflow (workaround for required status checks issue)
56
56
type : boolean
57
57
default : true
58
+ upgrade :
59
+ description : Whether to perform an upgrade
60
+ type : boolean
61
+ default : false
58
62
secrets :
59
63
KAYOBE_VAULT_PASSWORD :
60
64
required : true
@@ -76,10 +80,27 @@ jobs:
76
80
KAYOBE_ENVIRONMENT : ci-aio
77
81
KAYOBE_VAULT_PASSWORD : ${{ secrets.KAYOBE_VAULT_PASSWORD }}
78
82
KAYOBE_IMAGE : ${{ inputs.kayobe_image }}
83
+ # NOTE(upgrade): Reference the PREVIOUS release here.
84
+ PREVIOUS_KAYOBE_IMAGE : ghcr.io/stackhpc/stackhpc-kayobe-config:stackhpc-yoga
85
+ # NOTE(upgrade): Reference the PREVIOUS release branch here.
86
+ PREVIOUS_BRANCH : stackhpc/yoga
79
87
steps :
80
- - uses : actions/checkout@v3
88
+ # If testing upgrade, checkout previous release, otherwise checkout current branch
89
+ - name : Checkout ${{ inputs.upgrade && 'previous release' || 'current' }} config
90
+ uses : actions/checkout@v3
81
91
with :
82
- submodules : true
92
+ ref : ${{ inputs.upgrade && env.PREVIOUS_BRANCH || github.ref }}
93
+ submodules : true
94
+
95
+ - name : Output Kayobe image
96
+ id : kayobe_image
97
+ run : |
98
+ if ${{ inputs.upgrade }}; then
99
+ kayobe_image=$PREVIOUS_KAYOBE_IMAGE
100
+ else
101
+ kayobe_image=$KAYOBE_IMAGE
102
+ fi
103
+ echo kayobe_image=$kayobe_image >> $GITHUB_OUTPUT
83
104
84
105
- name : Output image tag
85
106
id : image_tag
@@ -125,6 +146,7 @@ jobs:
125
146
aio_vm_flavor = "${{ env.VM_FLAVOR }}"
126
147
aio_vm_network = "${{ env.VM_NETWORK }}"
127
148
aio_vm_subnet = "${{ env.VM_SUBNET }}"
149
+ aio_vm_volume_size = "${{ env.VM_VOLUME_SIZE }}"
128
150
EOF
129
151
working-directory : ${{ github.workspace }}/terraform/aio
130
152
env :
@@ -135,6 +157,7 @@ jobs:
135
157
VM_NETWORK : ${{ inputs.vm_network }}
136
158
VM_SUBNET : ${{ inputs.vm_subnet }}
137
159
VM_INTERFACE : ${{ inputs.vm_interface }}
160
+ VM_VOLUME_SIZE : ${{ inputs.upgrade && '45' || '35' }}
138
161
139
162
- name : Terraform Plan
140
163
run : terraform plan
@@ -206,8 +229,14 @@ jobs:
206
229
cat terraform/aio/id_rsa >> $GITHUB_OUTPUT
207
230
echo "EOF" >> $GITHUB_OUTPUT
208
231
232
+ # The same tag may be reused (e.g. stackhpc/yoga), so ensure we have the latest image.
233
+ - name : Pull previous Kayobe image
234
+ run : |
235
+ sudo docker image pull ${{ steps.kayobe_image.outputs.kayobe_image }}
236
+ if : inputs.upgrade
237
+
209
238
# The same tag may be reused (e.g. pr-123), so ensure we have the latest image.
210
- - name : Pull latest Kayobe image
239
+ - name : Pull current Kayobe image
211
240
run : |
212
241
sudo docker image pull $KAYOBE_IMAGE
213
242
@@ -216,7 +245,7 @@ jobs:
216
245
sudo -E docker run -t --rm \
217
246
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
218
247
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
219
- $KAYOBE_IMAGE \
248
+ ${{ steps.kayobe_image.outputs.kayobe_image }} \
220
249
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/growroot.yml'
221
250
env :
222
251
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
@@ -226,7 +255,7 @@ jobs:
226
255
sudo -E docker run -t --rm \
227
256
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
228
257
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
229
- $KAYOBE_IMAGE \
258
+ ${{ steps.kayobe_image.outputs.kayobe_image }} \
230
259
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-host-configure.sh
231
260
env :
232
261
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
@@ -236,7 +265,7 @@ jobs:
236
265
sudo -E docker run -t --rm \
237
266
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
238
267
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
239
- $KAYOBE_IMAGE \
268
+ ${{ steps.kayobe_image.outputs.kayobe_image }} \
240
269
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-service-deploy.sh
241
270
env :
242
271
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
@@ -246,11 +275,62 @@ jobs:
246
275
sudo -E docker run -t --rm \
247
276
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
248
277
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
249
- $KAYOBE_IMAGE \
278
+ ${{ steps.kayobe_image.outputs.kayobe_image }} \
250
279
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible/configure-aio-resources.yml
251
280
env :
252
281
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
253
282
283
+ # If testing upgrade, checkout the current release branch
284
+ # Stash changes to tracked files, and set clean=false to avoid removing untracked files.
285
+ - name : Stash config changes
286
+ run : git stash
287
+ if : inputs.upgrade
288
+
289
+ - name : Checkout current release config
290
+ uses : actions/checkout@v3
291
+ with :
292
+ submodules : true
293
+ clean : false
294
+ if : inputs.upgrade
295
+
296
+ - name : Pop stashed config changes
297
+ run : git stash pop
298
+ if : inputs.upgrade
299
+
300
+ # Now begin upgrade
301
+ - name : Host upgrade
302
+ run : |
303
+ sudo -E docker run -t --rm \
304
+ -v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
305
+ -e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
306
+ $KAYOBE_IMAGE \
307
+ /stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-host-upgrade.sh
308
+ env :
309
+ KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
310
+ if : inputs.upgrade
311
+
312
+ - name : Host configure
313
+ run : |
314
+ sudo -E docker run -t --rm \
315
+ -v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
316
+ -e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
317
+ $KAYOBE_IMAGE \
318
+ /stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-host-configure.sh
319
+ env :
320
+ KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
321
+ if : inputs.upgrade
322
+
323
+ - name : Service upgrade
324
+ run : |
325
+ sudo -E docker run -t --rm \
326
+ -v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
327
+ -e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
328
+ $KAYOBE_IMAGE \
329
+ /stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-service-upgrade.sh
330
+ env :
331
+ KAYOBE_AUTOMATION_SSH_PRIVATE_KEY : ${{ steps.ssh_key.outputs.ssh_key }}
332
+ if : inputs.upgrade
333
+
254
334
- name : Tempest tests
255
335
run : |
256
336
mkdir -p tempest-artifacts
@@ -266,7 +346,7 @@ jobs:
266
346
- name : Upload test result artifacts
267
347
uses : actions/upload-artifact@v3
268
348
with :
269
- name : tempest-results-${{ inputs.os_distribution }}-${{ inputs.os_release }}-${{ inputs.neutron_plugin }}
349
+ name : tempest-results-${{ inputs.os_distribution }}-${{ inputs.os_release }}-${{ inputs.neutron_plugin }}${{ inputs.upgrade && '-upgrade' }}
270
350
path : tempest-artifacts/*
271
351
272
352
- name : Fail if any Tempest tests failed
0 commit comments