From 5eb87fdde3ab4424397309e0d2a34a4054143140 Mon Sep 17 00:00:00 2001 From: "max.bed4d" Date: Thu, 13 Feb 2025 11:23:27 +0000 Subject: [PATCH 1/3] Support for SMS & Leafcloud runner builds --- .github/workflows/ipa-image-build.yml | 31 +++++++--- .../workflows/overcloud-host-image-build.yml | 60 ++++++++++++++++--- 2 files changed, 74 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ipa-image-build.yml b/.github/workflows/ipa-image-build.yml index 3046b3757..7de711b8c 100644 --- a/.github/workflows/ipa-image-build.yml +++ b/.github/workflows/ipa-image-build.yml @@ -11,6 +11,13 @@ on: description: Build Ubuntu 22.04 Jammy type: boolean default: true + runner_env: + description: Which cloud to run on? + type: choice + default: SMS Lab + options: + - SMS Lab + - Leafcloud secrets: KAYOBE_VAULT_PASSWORD: required: true @@ -25,11 +32,19 @@ env: ANSIBLE_FORCE_COLOR: True KAYOBE_ENVIRONMENT: ci-builder KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} + jobs: + runner-preqs: + uses: ./.github/workflows/runs-on-preq.yml + with: + runner_env: ${{ inputs.runner_env }} ipa-image-build: name: Build IPA images if: github.repository == 'stackhpc/stackhpc-kayobe-config' - runs-on: arc-skc-host-image-builder-runner + environment: ${{ inputs.runner_env }} + runs-on: ${{ needs.runner-preqs.outputs.runner_name_image_build }} + needs: + - runner-preqs permissions: {} steps: - name: Install Package @@ -99,12 +114,12 @@ jobs: ssh_public_key = "id_rsa.pub" ssh_username = "ubuntu" aio_vm_name = "skc-ipa-image-builder" - aio_vm_image = "Ubuntu-22.04" - aio_vm_flavor = "en1.large" - aio_vm_network = "stackhpc-ci" - aio_vm_subnet = "stackhpc-ci" + aio_vm_image = "${{ vars.HOST_IMAGE_BUILD_IMAGE }}" + aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}" + aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}" + aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}" aio_vm_interface = "ens3" - aio_vm_volume_size = 100 + aio_vm_volume_size = "${{ vars.HOST_IMAGE_BUILD_VOLUME }}" EOF working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio @@ -112,7 +127,7 @@ jobs: run: terraform plan working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: - OS_CLOUD: "openstack" + OS_CLOUD: ${{ vars.OS_CLOUD }} OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} @@ -132,7 +147,7 @@ jobs: exit 1 working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: - OS_CLOUD: "openstack" + OS_CLOUD: ${{ vars.OS_CLOUD }} OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} diff --git a/.github/workflows/overcloud-host-image-build.yml b/.github/workflows/overcloud-host-image-build.yml index 215452cf2..305316b03 100644 --- a/.github/workflows/overcloud-host-image-build.yml +++ b/.github/workflows/overcloud-host-image-build.yml @@ -11,6 +11,13 @@ on: description: Build Ubuntu 22.04 Jammy type: boolean default: true + runner_env: + description: Which cloud to run on? + type: choice + default: SMS Lab + options: + - SMS Lab + - Leafcloud secrets: KAYOBE_VAULT_PASSWORD: required: true @@ -26,10 +33,17 @@ env: KAYOBE_ENVIRONMENT: ci-builder KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} jobs: + runner-preqs: + uses: ./.github/workflows/runs-on-preq.yml + with: + runner_env: ${{ inputs.runner_env }} overcloud-host-image-build: name: Build overcloud host images if: github.repository == 'stackhpc/stackhpc-kayobe-config' - runs-on: arc-skc-host-image-builder-runner + environment: ${{ inputs.runner_env }} + runs-on: ${{ needs.runner-preqs.outputs.runner_name_image_build }} + needs: + - runner-preqs permissions: {} steps: - name: Validate inputs @@ -109,10 +123,10 @@ jobs: aio_vm_name = "skc-host-image-builder" # Must be an Ubuntu Jammy host to successfully build all images # This MUST NOT be an LVM image. It can cause confusing conficts with the built image. - aio_vm_image = "Ubuntu-22.04" - aio_vm_flavor = "en1.medium" - aio_vm_network = "stackhpc-ci" - aio_vm_subnet = "stackhpc-ci" + aio_vm_image = "${{ vars.HOST_IMAGE_BUILD_IMAGE }}" + aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}" + aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}" + aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}" aio_vm_interface = "ens3" EOF working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio @@ -121,7 +135,7 @@ jobs: run: terraform plan working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: - OS_CLOUD: "openstack" + OS_CLOUD: ${{ vars.OS_CLOUD }} OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} @@ -141,7 +155,7 @@ jobs: exit 1 working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: - OS_CLOUD: "openstack" + OS_CLOUD: ${{ vars.OS_CLOUD }} OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} @@ -250,7 +264,7 @@ jobs: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success' - - name: Upload Rocky Linux 9 overcloud host image to Dev Cloud + - name: Upload Rocky Linux 9 overcloud host image to current Dev Cloud (SMS/Leafcloud) run: | source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-builder && @@ -264,6 +278,20 @@ jobs: OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success' + - name: Upload Rocky Linux 9 overcloud host image to other Dev Cloud (Leafcloud/SMS) + run: | + source venvs/kayobe/bin/activate && + source src/kayobe-config/kayobe-env --environment ci-builder && + kayobe playbook run \ + src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \ + -e local_image_path="/opt/kayobe/images/overcloud-rocky-9/overcloud-rocky-9.qcow2" \ + -e image_name=overcloud-rocky-9-${{ steps.host_image_tag.outputs.host_image_tag }} + env: + CLOUDS_YAML: ${{ secrets.CLOUDS_YAML_OTHER_CLOUD }} + OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID_OTHER_CLOUD }} + OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET_OTHER_CLOUD }} + if: inputs.rocky9 && steps.build_rocky_9.outcome == 'success' + - name: Build an Ubuntu Jammy 22.04 overcloud host image id: build_ubuntu_jammy continue-on-error: true @@ -304,7 +332,7 @@ jobs: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' - - name: Upload Ubuntu Jammy overcloud host image to Dev Cloud + - name: Upload Ubuntu Jammy overcloud host image to current Dev Cloud (SMS/Leafcloud) run: | source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-builder && @@ -318,6 +346,20 @@ jobs: OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' + - name: Upload Ubuntu Jammy overcloud host image to other Dev Cloud (Leafcloud/SMS) + run: | + source venvs/kayobe/bin/activate && + source src/kayobe-config/kayobe-env --environment ci-builder && + kayobe playbook run \ + src/kayobe-config/etc/kayobe/ansible/openstack-host-image-upload.yml \ + -e local_image_path="/opt/kayobe/images/overcloud-ubuntu-jammy/overcloud-ubuntu-jammy.qcow2" \ + -e image_name=overcloud-ubuntu-jammy-${{ steps.host_image_tag.outputs.host_image_tag }} + env: + CLOUDS_YAML: ${{ secrets.CLOUDS_YAML_OTHER_CLOUD }} + OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID_OTHER_CLOUD }} + OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET_OTHER_CLOUD }} + if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success' + - name: Copy logs back continue-on-error: true run: | From e305202a6000e5b055374506c1bdd04f74b8c7cd Mon Sep 17 00:00:00 2001 From: "max.bed4d" Date: Thu, 13 Feb 2025 13:56:53 +0000 Subject: [PATCH 2/3] Renaming for clarity --- .github/workflows/ipa-image-build.yml | 8 ++++---- .github/workflows/overcloud-host-image-build.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ipa-image-build.yml b/.github/workflows/ipa-image-build.yml index 7de711b8c..2a7cb6194 100644 --- a/.github/workflows/ipa-image-build.yml +++ b/.github/workflows/ipa-image-build.yml @@ -34,17 +34,17 @@ env: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} jobs: - runner-preqs: - uses: ./.github/workflows/runs-on-preq.yml + runner-selection: + uses: ./.github/workflows/runner-selector.yml with: runner_env: ${{ inputs.runner_env }} ipa-image-build: name: Build IPA images if: github.repository == 'stackhpc/stackhpc-kayobe-config' environment: ${{ inputs.runner_env }} - runs-on: ${{ needs.runner-preqs.outputs.runner_name_image_build }} + runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }} needs: - - runner-preqs + - runner-selection permissions: {} steps: - name: Install Package diff --git a/.github/workflows/overcloud-host-image-build.yml b/.github/workflows/overcloud-host-image-build.yml index 305316b03..a0c98c98f 100644 --- a/.github/workflows/overcloud-host-image-build.yml +++ b/.github/workflows/overcloud-host-image-build.yml @@ -33,17 +33,17 @@ env: KAYOBE_ENVIRONMENT: ci-builder KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} jobs: - runner-preqs: - uses: ./.github/workflows/runs-on-preq.yml + runner-selection: + uses: ./.github/workflows/runner-selector.yml with: runner_env: ${{ inputs.runner_env }} overcloud-host-image-build: name: Build overcloud host images if: github.repository == 'stackhpc/stackhpc-kayobe-config' environment: ${{ inputs.runner_env }} - runs-on: ${{ needs.runner-preqs.outputs.runner_name_image_build }} + runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }} needs: - - runner-preqs + - runner-selection permissions: {} steps: - name: Validate inputs From 06a0cbf9b592aa54d51e0e607611d1ae9288964e Mon Sep 17 00:00:00 2001 From: Massimiliano Favaro-Bedford <78351765+MaxBed4d@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:27:59 +0000 Subject: [PATCH 3/3] White space clean up Co-authored-by: Alex-Welsh <112560678+Alex-Welsh@users.noreply.github.com> --- .github/workflows/ipa-image-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ipa-image-build.yml b/.github/workflows/ipa-image-build.yml index 2a7cb6194..a4712c429 100644 --- a/.github/workflows/ipa-image-build.yml +++ b/.github/workflows/ipa-image-build.yml @@ -32,12 +32,12 @@ env: ANSIBLE_FORCE_COLOR: True KAYOBE_ENVIRONMENT: ci-builder KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} - jobs: runner-selection: uses: ./.github/workflows/runner-selector.yml with: runner_env: ${{ inputs.runner_env }} + ipa-image-build: name: Build IPA images if: github.repository == 'stackhpc/stackhpc-kayobe-config'