Skip to content

Commit 76748d5

Browse files
committed
CI: Use GitHub per-environment variables and secrets to decouple from Leafcloud
We are planning to move at least some of our CI workloads back onto SMS lab. Currently various Leafcloud resource names are hard-coded into our workflows, making it difficult to support a different cloud. This change extracts cloud-specific information into GitHub per-environment secrets and variables. A Leafcloud environment has been created in the GitHub settings for this repository, and the variables referenced here have been created within it.
1 parent e416c46 commit 76748d5

File tree

5 files changed

+30
-52
lines changed

5 files changed

+30
-52
lines changed

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
overcloud-host-image-build:
4242
name: Build overcloud host images
4343
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
44+
environment: Leafcloud
4445
runs-on: arc-skc-host-image-builder-runner
4546
permissions: {}
4647
steps:
@@ -121,10 +122,10 @@ jobs:
121122
aio_vm_name = "skc-host-image-builder"
122123
# Must be a Rocky Linux 9 host to successfully build all images
123124
# This MUST NOT be an LVM image. It can cause confusing conficts with the built image.
124-
aio_vm_image = "Rocky-9-GenericCloud-Base-9.3-20231113.0.x86_64.qcow2"
125-
aio_vm_flavor = "en1.medium"
126-
aio_vm_network = "stackhpc-ci"
127-
aio_vm_subnet = "stackhpc-ci"
125+
aio_vm_image = "${{ vars.HOST_IMAGE_BUILD_IMAGE }}"
126+
aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}"
127+
aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}"
128+
aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}"
128129
aio_vm_interface = "eth0"
129130
EOF
130131
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
@@ -133,7 +134,7 @@ jobs:
133134
run: terraform plan
134135
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
135136
env:
136-
OS_CLOUD: "openstack"
137+
OS_CLOUD: ${{ vars.OS_CLOUD }}
137138
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
138139
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
139140

@@ -153,7 +154,7 @@ jobs:
153154
exit 1
154155
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
155156
env:
156-
OS_CLOUD: "openstack"
157+
OS_CLOUD: ${{ vars.OS_CLOUD }}
157158
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
158159
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
159160

@@ -511,7 +512,7 @@ jobs:
511512
run: terraform destroy -auto-approve
512513
working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio
513514
env:
514-
OS_CLOUD: openstack
515+
OS_CLOUD: ${{ vars.OS_CLOUD }}
515516
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
516517
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
517-
if: always()
518+
if: always()

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jobs:
4343
overcloud-host-image-upload:
4444
name: Upload overcloud host images
4545
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
46+
environment: Leafcloud
4647
runs-on: arc-skc-host-image-builder-runner
4748
permissions: {}
4849
steps:
@@ -106,7 +107,7 @@ jobs:
106107
openstack image show \
107108
overcloud-centos-8-stream-${{ steps.centos_8_stream_image_tag.outputs.image_tag }}
108109
env:
109-
OS_CLOUD: openstack
110+
OS_CLOUD: ${{ vars.OS_CLOUD }}
110111
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
111112
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
112113
continue-on-error: true
@@ -134,7 +135,7 @@ jobs:
134135
--private \
135136
--progress
136137
env:
137-
OS_CLOUD: openstack
138+
OS_CLOUD: ${{ vars.OS_CLOUD }}
138139
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
139140
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
140141
if: inputs.centos && steps.centos_8_stream_image_exists.outcome == 'failure'
@@ -151,7 +152,7 @@ jobs:
151152
openstack image show \
152153
overcloud-rocky-8-${{ steps.rocky_8_image_tag.outputs.image_tag }}
153154
env:
154-
OS_CLOUD: openstack
155+
OS_CLOUD: ${{ vars.OS_CLOUD }}
155156
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
156157
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
157158
continue-on-error: true
@@ -179,7 +180,7 @@ jobs:
179180
--private \
180181
--progress
181182
env:
182-
OS_CLOUD: openstack
183+
OS_CLOUD: ${{ vars.OS_CLOUD }}
183184
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
184185
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
185186
if: inputs.rocky8 && steps.rocky_8_image_exists.outcome == 'failure'
@@ -196,7 +197,7 @@ jobs:
196197
openstack image show \
197198
overcloud-rocky-9-${{ steps.rocky_9_image_tag.outputs.image_tag }}
198199
env:
199-
OS_CLOUD: openstack
200+
OS_CLOUD: ${{ vars.OS_CLOUD }}
200201
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
201202
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
202203
continue-on-error: true
@@ -224,7 +225,7 @@ jobs:
224225
--private \
225226
--progress
226227
env:
227-
OS_CLOUD: openstack
228+
OS_CLOUD: ${{ vars.OS_CLOUD }}
228229
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
229230
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
230231
if: inputs.rocky9 && steps.rocky_9_image_exists.outcome == 'failure'
@@ -241,7 +242,7 @@ jobs:
241242
openstack image show \
242243
overcloud-ubuntu-focal-${{ steps.ubuntu_focal_image_tag.outputs.image_tag }}
243244
env:
244-
OS_CLOUD: openstack
245+
OS_CLOUD: ${{ vars.OS_CLOUD }}
245246
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
246247
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
247248
continue-on-error: true
@@ -269,7 +270,7 @@ jobs:
269270
--private \
270271
--progress
271272
env:
272-
OS_CLOUD: openstack
273+
OS_CLOUD: ${{ vars.OS_CLOUD }}
273274
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
274275
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
275276
if: inputs.ubuntu-focal && steps.ubuntu_focal_image_exists.outcome == 'failure'
@@ -286,7 +287,7 @@ jobs:
286287
openstack image show \
287288
overcloud-ubuntu-jammy-${{ steps.ubuntu_jammy_image_tag.outputs.image_tag }}
288289
env:
289-
OS_CLOUD: openstack
290+
OS_CLOUD: ${{ vars.OS_CLOUD }}
290291
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
291292
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
292293
continue-on-error: true
@@ -314,7 +315,7 @@ jobs:
314315
--private \
315316
--progress
316317
env:
317-
OS_CLOUD: openstack
318+
OS_CLOUD: ${{ vars.OS_CLOUD }}
318319
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
319320
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
320321
if: inputs.ubuntu-jammy && steps.ubuntu_jammy_image_exists.outcome == 'failure'

.github/workflows/stackhpc-all-in-one.yml

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,6 @@ on:
3535
description: Default network interface name
3636
type: string
3737
default: ens3
38-
vm_flavor:
39-
description: Flavor for the all-in-one VM
40-
type: string
41-
default: en1.medium
42-
vm_network:
43-
description: Network for the all-in-one VM
44-
type: string
45-
default: stackhpc-ci
46-
vm_subnet:
47-
description: Subnet for the all-in-one VM
48-
type: string
49-
default: stackhpc-ci
50-
OS_CLOUD:
51-
description: Name of cloud in clouds.yaml
52-
type: string
53-
required: true
5438
if:
5539
description: Whether to run the workflow (workaround for required status checks issue)
5640
type: boolean
@@ -70,6 +54,7 @@ jobs:
7054
all-in-one:
7155
name: All in one
7256
if: ${{ inputs.if && !cancelled() }}
57+
environment: Leafcloud
7358
runs-on: arc-skc-aio-runner
7459
permissions: {}
7560
env:
@@ -152,17 +137,17 @@ jobs:
152137
SSH_USERNAME: "${{ inputs.ssh_username }}"
153138
VM_NAME: "skc-ci-aio-${{ inputs.neutron_plugin }}-${{ github.run_id }}"
154139
VM_IMAGE: ${{ steps.image_name.outputs.image_name }}
155-
VM_FLAVOR: ${{ inputs.vm_flavor }}
156-
VM_NETWORK: ${{ inputs.vm_network }}
157-
VM_SUBNET: ${{ inputs.vm_subnet }}
140+
VM_FLAVOR: ${{ vars.AIO_FLAVOR }}
141+
VM_NETWORK: ${{ vars.AIO_NETWORK }}
142+
VM_SUBNET: ${{ vars.AIO_SUBNET }}
158143
VM_INTERFACE: ${{ inputs.vm_interface }}
159144
VM_TAGS: '["skc-ci-aio", "PR=${{ github.event.number }}"]'
160145

161146
- name: Terraform Plan
162147
run: terraform plan
163148
working-directory: ${{ github.workspace }}/terraform/aio
164149
env:
165-
OS_CLOUD: ${{ inputs.OS_CLOUD }}
150+
OS_CLOUD: ${{ vars.OS_CLOUD }}
166151
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
167152
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
168153

@@ -183,7 +168,7 @@ jobs:
183168
exit 1
184169
working-directory: ${{ github.workspace }}/terraform/aio
185170
env:
186-
OS_CLOUD: ${{ inputs.OS_CLOUD }}
171+
OS_CLOUD: ${{ vars.OS_CLOUD }}
187172
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
188173
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
189174

@@ -345,7 +330,7 @@ jobs:
345330
run: terraform destroy -auto-approve
346331
working-directory: ${{ github.workspace }}/terraform/aio
347332
env:
348-
OS_CLOUD: ${{ inputs.OS_CLOUD }}
333+
OS_CLOUD: ${{ vars.OS_CLOUD }}
349334
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
350335
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
351336
if: always()

.github/workflows/stackhpc-ci-cleanup.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ jobs:
99
ci-cleanup:
1010
name: Clean up stale CI resources
1111
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
12+
environment: Leafcloud
1213
runs-on: ubuntu-latest
1314
permissions: {}
1415
steps:
@@ -52,7 +53,7 @@ jobs:
5253
done
5354
exit $result
5455
env:
55-
OS_CLOUD: openstack
56+
OS_CLOUD: ${{ vars.OS_CLOUD }}
5657
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
5758
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
5859

@@ -72,7 +73,7 @@ jobs:
7273
done
7374
exit $result
7475
env:
75-
OS_CLOUD: openstack
76+
OS_CLOUD: ${{ vars.OS_CLOUD }}
7677
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
7778
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
7879

.github/workflows/stackhpc-pull-request.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ jobs:
8585
with:
8686
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
8787
neutron_plugin: ovs
88-
OS_CLOUD: openstack
8988
if: ${{ needs.check-changes.outputs.aio == 'true' }}
9089
secrets: inherit
9190
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -99,7 +98,6 @@ jobs:
9998
with:
10099
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
101100
neutron_plugin: ovn
102-
OS_CLOUD: openstack
103101
if: ${{ needs.check-changes.outputs.aio == 'true' }}
104102
secrets: inherit
105103
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -115,7 +113,6 @@ jobs:
115113
os_distribution: rocky
116114
os_release: "8"
117115
neutron_plugin: ovs
118-
OS_CLOUD: openstack
119116
if: ${{ needs.check-changes.outputs.aio == 'true' }}
120117
secrets: inherit
121118
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -131,7 +128,6 @@ jobs:
131128
os_distribution: rocky
132129
os_release: "8"
133130
neutron_plugin: ovn
134-
OS_CLOUD: openstack
135131
if: ${{ needs.check-changes.outputs.aio == 'true' }}
136132
secrets: inherit
137133
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -148,7 +144,6 @@ jobs:
148144
os_release: focal
149145
ssh_username: ubuntu
150146
neutron_plugin: ovs
151-
OS_CLOUD: openstack
152147
if: ${{ needs.check-changes.outputs.aio == 'true' }}
153148
secrets: inherit
154149
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -165,7 +160,6 @@ jobs:
165160
os_release: focal
166161
ssh_username: ubuntu
167162
neutron_plugin: ovn
168-
OS_CLOUD: openstack
169163
if: ${{ needs.check-changes.outputs.aio == 'true' }}
170164
secrets: inherit
171165
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -182,7 +176,6 @@ jobs:
182176
os_release: jammy
183177
ssh_username: ubuntu
184178
neutron_plugin: ovs
185-
OS_CLOUD: openstack
186179
if: ${{ needs.check-changes.outputs.aio == 'true' }}
187180
secrets: inherit
188181
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -199,7 +192,6 @@ jobs:
199192
os_release: jammy
200193
ssh_username: ubuntu
201194
neutron_plugin: ovn
202-
OS_CLOUD: openstack
203195
if: ${{ needs.check-changes.outputs.aio == 'true' }}
204196
secrets: inherit
205197
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -216,7 +208,6 @@ jobs:
216208
os_release: "9"
217209
ssh_username: cloud-user
218210
neutron_plugin: ovs
219-
OS_CLOUD: openstack
220211
if: ${{ needs.check-changes.outputs.aio == 'true' }}
221212
secrets: inherit
222213
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
@@ -233,7 +224,6 @@ jobs:
233224
os_release: "9"
234225
ssh_username: cloud-user
235226
neutron_plugin: ovn
236-
OS_CLOUD: openstack
237227
if: ${{ needs.check-changes.outputs.aio == 'true' }}
238228
secrets: inherit
239229
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}

0 commit comments

Comments
 (0)