Promote overcloud host image #268
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: Promote overcloud host image | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| rocky9: | |
| description: Promote Rocky Linux 9 | |
| type: boolean | |
| default: true | |
| rocky9-aarch64: | |
| description: Promote Rocky Linux 9 aarch64 | |
| type: boolean | |
| default: false | |
| rocky10: | |
| description: Promote Rocky Linux 10 | |
| type: boolean | |
| default: true | |
| rocky10-aarch64: | |
| description: Promote Rocky Linux 10 aarch64 | |
| type: boolean | |
| default: false | |
| ubuntu-noble: | |
| description: Promote Ubuntu 24.04 Noble | |
| type: boolean | |
| default: true | |
| env: | |
| ANSIBLE_FORCE_COLOR: True | |
| jobs: | |
| overcloud-host-image-promote: | |
| name: Promote overcloud host image | |
| if: github.repository == 'stackhpc/stackhpc-kayobe-config' | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Validate inputs | |
| run: | | |
| if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.rocky9-aarch64 }} == 'false' && ${{ inputs.rocky10 }} == 'false' && ${{ inputs.rocky10-aarch64 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then | |
| echo "At least one distribution must be selected" | |
| exit 1 | |
| fi | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: src/kayobe-config | |
| - name: Determine OpenStack release | |
| id: openstack_release | |
| run: | | |
| BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' .gitreview) | |
| echo "openstack_release=${BRANCH}" | sed -E "s,(stable|unmaintained)/,," >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| - name: Setup networking | |
| run: | | |
| if ! ip l show breth1 >/dev/null 2>&1; then | |
| sudo ip l add breth1 type bridge | |
| fi | |
| sudo ip l set breth1 up | |
| if ! ip a show breth1 | grep 192.168.33.3/24; then | |
| sudo ip a add 192.168.33.3/24 dev breth1 | |
| fi | |
| if ! ip l show dummy1 >/dev/null 2>&1; then | |
| sudo ip l add dummy1 type dummy | |
| fi | |
| sudo ip l set dummy1 up | |
| sudo ip l set dummy1 master breth1 | |
| - name: Install Kayobe | |
| run: | | |
| mkdir -p venvs && | |
| pushd venvs && | |
| python3 -m venv kayobe && | |
| source kayobe/bin/activate && | |
| pip install -U pip && | |
| pip install -r ../src/kayobe-config/requirements.txt | |
| - name: Bootstrap the control host | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe control host bootstrap | |
| - name: Gather Rocky Linux 9 overcloud host image tag | |
| id: rocky9_image_tag | |
| run: | | |
| echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| if: inputs.rocky9 | |
| - name: Gather Rocky Linux 10 overcloud host image tag | |
| id: rocky10_image_tag | |
| run: | | |
| echo image_tag=$(grep stackhpc_rocky_10_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| if: inputs.rocky10 | |
| - name: Gather Rocky Linux 9 aarch64 overcloud host image tag | |
| id: rocky9_aarch64_image_tag | |
| run: | | |
| echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version_aarch64: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| if: inputs.rocky9-aarch64 | |
| - name: Gather Rocky Linux 10 aarch64 overcloud host image tag | |
| id: rocky10_aarch64_image_tag | |
| run: | | |
| echo image_tag=$(grep stackhpc_rocky_10_overcloud_host_image_version_aarch64: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| if: inputs.rocky10-aarch64 | |
| - name: Gather Ubuntu Noble overcloud host image tag | |
| id: ubuntu_noble_image_tag | |
| run: | | |
| echo image_tag=$(grep stackhpc_ubuntu_noble_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT | |
| working-directory: src/kayobe-config | |
| if: inputs.ubuntu-noble | |
| - name: Promote Rocky Linux 9 overcloud host image artifact | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe playbook run \ | |
| src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \ | |
| -e artifact_type="kayobe-images" \ | |
| -e os_distribution='rocky' \ | |
| -e os_release='9' \ | |
| -e promotion_tag=${{ steps.rocky9_image_tag.outputs.image_tag }} | |
| env: | |
| KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} | |
| if: inputs.rocky9 | |
| - name: Promote Rocky Linux 10 overcloud host image artifact | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe playbook run \ | |
| src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \ | |
| -e artifact_type="kayobe-images" \ | |
| -e os_distribution='rocky' \ | |
| -e os_release='10' \ | |
| -e promotion_tag=${{ steps.rocky10_image_tag.outputs.image_tag }} | |
| env: | |
| KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} | |
| if: inputs.rocky10 | |
| - name: Promote Rocky Linux 9 aarch64 overcloud host image artifact | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe playbook run \ | |
| src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \ | |
| -e artifact_type="kayobe-images" \ | |
| -e os_distribution='rocky' \ | |
| -e os_release='9' \ | |
| -e promotion_tag=${{ steps.rocky9_aarch64_image_tag.outputs.image_tag }} \ | |
| -e repository_name="kayobe-images-${{ steps.openstack_release.outputs.openstack_release }}-rocky-9-aarch64" \ | |
| -e pulp_base_path="kayobe-images/${{ steps.openstack_release.outputs.openstack_release }}/rocky/9/aarch64" | |
| env: | |
| KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} | |
| if: inputs.rocky9-aarch64 | |
| - name: Promote Rocky Linux 10 aarch64 overcloud host image artifact | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe playbook run \ | |
| src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \ | |
| -e artifact_type="kayobe-images" \ | |
| -e os_distribution='rocky' \ | |
| -e os_release='10' \ | |
| -e promotion_tag=${{ steps.rocky10_aarch64_image_tag.outputs.image_tag }} \ | |
| -e repository_name="kayobe-images-${{ steps.openstack_release.outputs.openstack_release }}-rocky-10-aarch64" \ | |
| -e pulp_base_path="kayobe-images/${{ steps.openstack_release.outputs.openstack_release }}/rocky/10/aarch64" | |
| env: | |
| KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} | |
| if: inputs.rocky10-aarch64 | |
| - name: Promote Ubuntu Noble 24.04 overcloud host image artifact | |
| run: | | |
| source venvs/kayobe/bin/activate && | |
| source src/kayobe-config/kayobe-env --environment ci-builder && | |
| kayobe playbook run \ | |
| src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \ | |
| -e artifact_type="kayobe-images" \ | |
| -e os_distribution='ubuntu' \ | |
| -e os_release='noble' \ | |
| -e promotion_tag=${{ steps.ubuntu_noble_image_tag.outputs.image_tag }} | |
| env: | |
| KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} | |
| if: inputs.ubuntu-noble |