1111 - SMS
1212 - ARCUS
1313 schedule :
14- - cron : ' 0 0 * * *' # Run at midnight
14+ - cron : ' 0 0 * * *' # Run at midnight on default branch
1515
1616jobs :
1717 openstack :
1818 name : openstack-imagebuild
1919 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
2121 cancel-in-progress : true
2222 runs-on : ubuntu-22.04
2323 strategy :
2424 fail-fast : false # allow other matrix jobs to continue even if one fails
2525 matrix : # build RL8, RL9
26- os_version :
27- - RL8
28- - RL9
2926 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
3133 env :
3234 ANSIBLE_FORCE_COLOR : True
3335 OS_CLOUD : openstack
3436 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- }
4037 ARK_PASSWORD : ${{ secrets.ARK_PASSWORD }}
4138 LEAFCLOUD_PULP_PASSWORD : ${{ secrets.LEAFCLOUD_PULP_PASSWORD }}
4239
@@ -84,15 +81,12 @@ jobs:
8481
8582 PACKER_LOG=1 packer build \
8683 -on-error=${{ vars.PACKER_ON_ERROR }} \
87- -only=${{ matrix.build }} \
8884 -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 }}" \
9088 openstack.pkr.hcl
9189
92- env :
93- PKR_VAR_os_version : ${{ matrix.os_version }}
94- SOURCE_IMAGE : ${{ fromJSON(env.SOURCE_IMAGES_MAP)[matrix.os_version] }}
95-
9690 - name : Get created image names from manifest
9791 id : manifest
9892 run : |
@@ -126,7 +120,7 @@ jobs:
126120 name : upload-nightly-targets
127121 needs : openstack
128122 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 }}
130124 cancel-in-progress : true
131125 runs-on : ubuntu-22.04
132126 strategy :
@@ -136,18 +130,15 @@ jobs:
136130 - LEAFCLOUD
137131 - SMS
138132 - 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
144136 exclude :
145137 - target_cloud : LEAFCLOUD
146138 env :
147139 OS_CLOUD : openstack
148140 SOURCE_CLOUD : ${{ github.event.inputs.ci_cloud || vars.CI_CLOUD }}
149141 TARGET_CLOUD : ${{ matrix.target_cloud }}
150- IMAGE_NAME : " ${{ matrix.image }}-${{ matrix.os_version }}"
151142 steps :
152143 - uses : actions/checkout@v2
153144
@@ -162,42 +153,37 @@ jobs:
162153 . venv/bin/activate
163154 pip install -U pip
164155 pip install $(grep -o 'python-openstackclient[><=0-9\.]*' requirements.txt)
165- shell : bash
166156
167157 - name : Write clouds.yaml
168158 run : |
169159 mkdir -p ~/.config/openstack/
170160 echo "${{ secrets[format('{0}_CLOUDS_YAML', env.SOURCE_CLOUD)] }}" > ~/.config/openstack/source_clouds.yaml
171161 echo "${{ secrets[format('{0}_CLOUDS_YAML', env.TARGET_CLOUD)] }}" > ~/.config/openstack/target_clouds.yaml
172- shell : bash
173162
174163 - name : Download source image
175164 run : |
176165 . venv/bin/activate
177166 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 }}
180168
181169 - name : Upload to target cloud
182170 run : |
183171 . venv/bin/activate
184172 export OS_CLIENT_CONFIG_FILE=~/.config/openstack/target_clouds.yaml
185173
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 }}" \
188176 --disk-format qcow2 \
189- shell : bash
190177
191178 - name : Delete old latest image from target cloud
192179 run : |
193180 . venv/bin/activate
194181 export OS_CLIENT_CONFIG_FILE=~/.config/openstack/target_clouds.yaml
195182
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)
197184 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)
199186 openstack image delete "$OLD_IMAGE_ID"
200187 else
201188 echo "Only one image exists, skipping deletion."
202189 fi
203- shell : bash
0 commit comments