|
1 | 1 | --- |
2 | | -name: Build overcloud host images |
| 2 | +name: Build Amphora image |
3 | 3 | on: |
4 | 4 | workflow_dispatch: |
5 | 5 | inputs: |
|
27 | 27 | KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
28 | 28 | jobs: |
29 | 29 | overcloud-host-image-build: |
30 | | - name: Build overcloud host images |
| 30 | + name: Build Amphora image |
31 | 31 | if: github.repository == 'stackhpc/stackhpc-kayobe-config' |
32 | 32 | runs-on: arc-skc-host-image-builder-runner |
33 | 33 | permissions: {} |
34 | 34 | steps: |
35 | | - - name: Validate inputs |
36 | | - run: | |
37 | | - if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.ubuntu-jammy }} == 'false' ]]; then |
38 | | - echo "At least one distribution must be selected" |
39 | | - exit 1 |
40 | | - fi |
41 | 35 |
|
42 | 36 | - name: Install Package |
43 | 37 | uses: ConorMacBride/install-package@main |
|
62 | 56 | id: openstack_release |
63 | 57 | run: | |
64 | 58 | BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview) |
| 59 | + echo "BRANCH=$BRANCH" >> $GITHUB_OUTPUT |
65 | 60 | echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT |
66 | 61 |
|
67 | 62 | # Generate a tag to apply to all built overcloud host images. |
@@ -198,142 +193,74 @@ jobs: |
198 | 193 | source venvs/kayobe/bin/activate && |
199 | 194 | source src/kayobe-config/kayobe-env --environment ci-builder && |
200 | 195 | kayobe seed host command run \ |
201 | | - --command "sudo apt update && sudo apt -y install gcc git libffi-dev python3-dev python-is-python3 python3-venv" --show-output |
| 196 | + --command "sudo apt update && sudo apt -y install gcc git libffi-dev python3-dev python-is-python3 python3-venv pip debootstrap qemu-utils kpartx" --show-output |
202 | 197 | env: |
203 | 198 | KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
204 | 199 |
|
205 | | - - name: Create bifrost_httpboot Docker volume |
| 200 | + - name: Clone Octavia source code |
206 | 201 | run: | |
207 | 202 | source venvs/kayobe/bin/activate && |
208 | 203 | source src/kayobe-config/kayobe-env --environment ci-builder && |
209 | | - kayobe seed host command run --command "sudo mkdir -p /var/lib/docker/volumes/bifrost_httpboot/_data" --show-output |
210 | | - env: |
211 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
212 | | - |
213 | | - - name: Build a Rocky Linux 9 overcloud host image |
214 | | - id: build_rocky_9 |
215 | | - continue-on-error: true |
216 | | - run: | |
217 | | - source venvs/kayobe/bin/activate && |
218 | | - source src/kayobe-config/kayobe-env --environment ci-builder && |
219 | | - kayobe overcloud host image build --force-rebuild \ |
220 | | - -e os_distribution="rocky" \ |
221 | | - -e os_release="9" \ |
222 | | - -e stackhpc_overcloud_dib_name=overcloud-rocky-9 |
223 | | - env: |
224 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
225 | | - if: inputs.rocky9 |
226 | | - |
227 | | - - name: Show last error logs |
228 | | - continue-on-error: true |
229 | | - run: | |
230 | | - source venvs/kayobe/bin/activate && |
231 | | - source src/kayobe-config/kayobe-env --environment ci-builder && |
232 | | - kayobe seed host command run --command "tail -200 /opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.stdout" --show-output |
233 | | - env: |
234 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
235 | | - if: steps.build_rocky_9.outcome == 'failure' |
| 204 | + kayobe seed host command run \ |
| 205 | + --command "git clone https://opendev.org/openstack/octavia -b ${{ steps.openstack_release.outputs.BRANCH }}" --show-output |
236 | 206 |
|
237 | | - - name: Upload Rocky Linux 9 overcloud host image to Ark |
| 207 | + - name: Install diskimage-builder |
238 | 208 | run: | |
239 | 209 | source venvs/kayobe/bin/activate && |
240 | 210 | source src/kayobe-config/kayobe-env --environment ci-builder && |
241 | | - kayobe playbook run \ |
242 | | - src/kayobe-config/etc/kayobe/ansible/pulp-image-upload.yml \ |
243 | | - -e image_path=/opt/kayobe/images/overcloud-rocky-9 \ |
244 | | - -e image_tag=${{ steps.image_tag.outputs.image_tag }} \ |
245 | | - -e os_distribution="rocky" \ |
246 | | - -e os_release="9" |
247 | | - env: |
248 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
249 | | - if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success' |
| 211 | + kayobe seed host command run \ |
| 212 | + --command "pip install diskimage-builder" --show-output |
250 | 213 |
|
251 | | - - name: Upload Rocky Linux 9 overcloud host image to Dev Cloud |
| 214 | + - name: Create build log file |
252 | 215 | run: | |
253 | 216 | source venvs/kayobe/bin/activate && |
254 | 217 | source src/kayobe-config/kayobe-env --environment ci-builder && |
255 | | - kayobe playbook run \ |
256 | | - src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \ |
257 | | - -e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \ |
258 | | - -e image_name=overcloud-rocky-9-${{ steps.image_tag.outputs.image_tag }} |
259 | | - env: |
260 | | - CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }} |
261 | | - OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} |
262 | | - OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} |
263 | | - if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success' |
| 218 | + kayobe seed host command run \ |
| 219 | + --command "touch ~/octavia-amphora-image-build.log" --show-output |
264 | 220 |
|
265 | | - - name: Build an Ubuntu Jammy 22.04 overcloud host image |
266 | | - id: build_ubuntu_jammy |
267 | | - continue-on-error: true |
| 221 | + - name: Create Amphora image |
| 222 | + id: build_amphora |
268 | 223 | run: | |
269 | 224 | source venvs/kayobe/bin/activate && |
270 | 225 | source src/kayobe-config/kayobe-env --environment ci-builder && |
271 | | - kayobe overcloud host image build --force-rebuild \ |
272 | | - -e os_distribution="ubuntu" \ |
273 | | - -e os_release="jammy" \ |
274 | | - -e stackhpc_overcloud_dib_name=overcloud-ubuntu-jammy |
275 | | - env: |
276 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
277 | | - if: inputs.ubuntu-jammy |
| 226 | + kayobe seed host command run \ |
| 227 | + --command "~/octavia/diskimage-create/diskimage-create.sh -i ubuntu-minimal -s 3 -t qcow2 -o ~/amphora-x64-haproxy.qcow2 -g ${{ steps.openstack_release.outputs.BRANCH }} -w ~ >> ~/octavia-amphora-image-build.log 2>&1" --show-output |
278 | 228 |
|
279 | 229 | - name: Show last error logs |
280 | 230 | continue-on-error: true |
281 | 231 | run: | |
282 | 232 | source venvs/kayobe/bin/activate && |
283 | 233 | source src/kayobe-config/kayobe-env --environment ci-builder && |
284 | | - kayobe seed host command run --command "tail -200 /opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.stdout" --show-output |
| 234 | + kayobe seed host command run --command "tail -200 ~/octavia-amphora-image-build.log" --show-output |
285 | 235 | env: |
286 | 236 | KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
287 | | - if: steps.build_ubuntu_jammy.outcome == 'failure' |
| 237 | + if: steps.build_amphora.outcome == 'failure' |
288 | 238 |
|
289 | | - - name: Upload Ubuntu Jammy 22.04 overcloud host image to Ark |
290 | | - run: | |
291 | | - source venvs/kayobe/bin/activate && |
292 | | - source src/kayobe-config/kayobe-env --environment ci-builder && |
293 | | - kayobe playbook run \ |
294 | | - src/kayobe-config/etc/kayobe/ansible/pulp-image-upload.yml \ |
295 | | - -e image_path=/opt/kayobe/images/overcloud-ubuntu-jammy \ |
296 | | - -e image_tag=${{ steps.image_tag.outputs.image_tag }} \ |
297 | | - -e os_distribution="ubuntu" \ |
298 | | - -e os_release="jammy" |
299 | | - env: |
300 | | - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
301 | | - if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' |
302 | | - |
303 | | - - name: Upload Ubuntu Jammy overcloud host image to Dev Cloud |
| 239 | + - name: Copy Amphora image back |
| 240 | + continue-on-error: true |
304 | 241 | run: | |
305 | | - source venvs/kayobe/bin/activate && |
306 | | - source src/kayobe-config/kayobe-env --environment ci-builder && |
307 | | - kayobe playbook run \ |
308 | | - src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \ |
309 | | - -e local_image_path="/opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.qcow2" \ |
310 | | - -e image_name=overcloud-ubuntu-jammy-${{ steps.image_tag.outputs.image_tag }} |
311 | | - env: |
312 | | - CLOUDS_YAML: ${{ secrets.CLOUDS_YAML }} |
313 | | - OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} |
314 | | - OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} |
315 | | - if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' |
| 242 | + mkdir artifact |
| 243 | + scp ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/amphora-x64-haproxy.qcow2 ./artifact |
| 244 | + if: steps.build_amphora.outcome == 'success' |
316 | 245 |
|
317 | | - - name: Copy logs back |
| 246 | + - name: Copy logback |
318 | 247 | continue-on-error: true |
319 | 248 | run: | |
320 | | - mkdir logs |
321 | | - scp -r ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):/opt/kayobe/images/*/*.std* ./logs/ |
322 | | - scp -r ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):/tmp/updated_images.txt ./logs/ || true |
| 249 | + mkdir artifact |
| 250 | + scp ubuntu@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/octavia-amphora-image-build.log ./artifact |
323 | 251 | if: always() |
324 | 252 |
|
325 | 253 | - name: Fail if any overcloud host image builds failed |
326 | 254 | run: | |
327 | 255 | echo "Builds failed. See workflow artifacts for details." && |
328 | 256 | exit 1 |
329 | | - if: steps.build_rocky_9.outcome == 'failure' || |
330 | | - steps.build_ubuntu_jammy.outcome == 'failure' |
| 257 | + if: steps.build_amphora.outcome == 'failure' |
331 | 258 |
|
332 | | - - name: Upload logs artifact |
| 259 | + - name: Upload logs & image artifact |
333 | 260 | uses: actions/upload-artifact@v4 |
334 | 261 | with: |
335 | | - name: Build logs |
336 | | - path: ./logs |
| 262 | + name: Build-result |
| 263 | + path: ./artifact |
337 | 264 | if: always() |
338 | 265 |
|
339 | 266 | - name: Destroy |
|
0 commit comments