|
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,88 @@ 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 }} |
| 204 | + kayobe seed host command run \ |
| 205 | + --command "git clone https://opendev.org/openstack/octavia -b ${{ steps.openstack_release.outputs.BRANCH }} ~/octavia" --show-output |
212 | 206 |
|
213 |
| - - name: Build a Rocky Linux 9 overcloud host image |
214 |
| - id: build_rocky_9 |
215 |
| - continue-on-error: true |
| 207 | + - name: Install diskimage-builder |
216 | 208 | run: |
|
217 | 209 | source venvs/kayobe/bin/activate &&
|
218 | 210 | 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 |
| 211 | + kayobe seed host command run \ |
| 212 | + --command "pip install diskimage-builder" --show-output |
226 | 213 |
|
227 |
| - - name: Show last error logs |
228 |
| - continue-on-error: true |
| 214 | + - name: Clone diskimage-builder source code |
229 | 215 | run: |
|
230 | 216 | source venvs/kayobe/bin/activate &&
|
231 | 217 | 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' |
| 218 | + kayobe seed host command run \ |
| 219 | + --command "git clone https://opendev.org/openstack/diskimage-builder ~/diskimage-builder" --show-output |
236 | 220 |
|
237 |
| - - name: Upload Rocky Linux 9 overcloud host image to Ark |
| 221 | + - name: Create build log file |
238 | 222 | run: |
|
239 | 223 | source venvs/kayobe/bin/activate &&
|
240 | 224 | 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' |
| 225 | + kayobe seed host command run \ |
| 226 | + --command "touch ~/octavia-amphora-image-build.log" --show-output |
250 | 227 |
|
251 |
| - - name: Upload Rocky Linux 9 overcloud host image to Dev Cloud |
| 228 | + - name: Install Amphora image build dependencies |
252 | 229 | run: |
|
253 | 230 | source venvs/kayobe/bin/activate &&
|
254 | 231 | 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' |
| 232 | + kayobe seed host command run \ |
| 233 | + --command "pip install -r ~/octavia/diskimage-create/requirements.txt" --show-output |
264 | 234 |
|
265 |
| - - name: Build an Ubuntu Jammy 22.04 overcloud host image |
266 |
| - id: build_ubuntu_jammy |
267 |
| - continue-on-error: true |
| 235 | + - name: Create Amphora image |
| 236 | + id: build_amphora |
268 | 237 | run: |
|
269 | 238 | source venvs/kayobe/bin/activate &&
|
270 | 239 | 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 |
| 240 | + kayobe seed host command run \ |
| 241 | + --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/diskimage-create/ >> ~/octavia-amphora-image-build.log 2>&1" --show-output |
278 | 242 |
|
279 | 243 | - name: Show last error logs
|
280 | 244 | continue-on-error: true
|
281 | 245 | run: |
|
282 | 246 | source venvs/kayobe/bin/activate &&
|
283 | 247 | 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 |
285 |
| - env: |
286 |
| - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} |
287 |
| - if: steps.build_ubuntu_jammy.outcome == 'failure' |
288 |
| - |
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" |
| 248 | + kayobe seed host command run --command "tail -200 ~/octavia-amphora-image-build.log" --show-output |
299 | 249 | env:
|
300 | 250 | KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
|
301 |
| - if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' |
| 251 | + if: steps.build_amphora.outcome == 'failure' |
302 | 252 |
|
303 |
| - - name: Upload Ubuntu Jammy overcloud host image to Dev Cloud |
| 253 | + - name: Copy Amphora image back |
| 254 | + continue-on-error: true |
304 | 255 | 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' |
| 256 | + mkdir artifact |
| 257 | + scp stack@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/amphora-x64-haproxy.qcow2 ./artifact |
| 258 | + if: steps.build_amphora.outcome == 'success' |
316 | 259 |
|
317 |
| - - name: Copy logs back |
| 260 | + - name: Copy logback |
318 | 261 | continue-on-error: true
|
319 | 262 | 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 |
| 263 | + mkdir artifact |
| 264 | + scp stack@$(jq -r .access_ip_v4.value src/kayobe-config/etc/kayobe/environments/ci-builder/tf-outputs.yml):~/octavia-amphora-image-build.log ./artifact |
323 | 265 | if: always()
|
324 | 266 |
|
325 | 267 | - name: Fail if any overcloud host image builds failed
|
326 | 268 | run: |
|
327 | 269 | echo "Builds failed. See workflow artifacts for details." &&
|
328 | 270 | exit 1
|
329 |
| - if: steps.build_rocky_9.outcome == 'failure' || |
330 |
| - steps.build_ubuntu_jammy.outcome == 'failure' |
| 271 | + if: steps.build_amphora.outcome == 'failure' |
331 | 272 |
|
332 |
| - - name: Upload logs artifact |
| 273 | + - name: Upload logs & image artifact |
333 | 274 | uses: actions/upload-artifact@v4
|
334 | 275 | with:
|
335 |
| - name: Build logs |
336 |
| - path: ./logs |
| 276 | + name: Build-result |
| 277 | + path: ./artifact |
337 | 278 | if: always()
|
338 | 279 |
|
339 | 280 | - name: Destroy
|
|
0 commit comments