diff --git a/.github/workflows/stackhpc-pull-request.yml b/.github/workflows/stackhpc-pull-request.yml index b5cf19c06..5102f2e71 100644 --- a/.github/workflows/stackhpc-pull-request.yml +++ b/.github/workflows/stackhpc-pull-request.yml @@ -8,58 +8,58 @@ name: Pull request 'on': pull_request: jobs: - # # Detect which files have changed and use this to run jobs conditionally. - # # Note that we can't use the workflow-level paths attribute since this - # # would skip the workflow entirely, and would prevent us from making the - # # aio jobs required to pass (a skip counts as a pass). - # check-changes: - # runs-on: ubuntu-24.04 - # permissions: - # pull-requests: read - # name: Check changed files - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' - # outputs: - # aio: ${{ steps.changes.outputs.aio }} - # build-kayobe-image: ${{ steps.changes.outputs.build-kayobe-image }} - # check-tags: ${{ steps.changes.outputs.check-tags }} - # steps: - # - name: GitHub Checkout - # uses: actions/checkout@v4 - - # - name: Check changed files - # uses: dorny/paths-filter@v3 - # id: changes - # with: - # # Filters are defined in this file. - # filters: .github/path-filters.yml - - # tox: - # runs-on: ubuntu-24.04 - # permissions: {} - # strategy: - # matrix: - # include: - # - environment: pep8 - # python-version: "3.10" - # - environment: releasenotes - # python-version: "3.10" - # - environment: docs - # python-version: "3.10" - # name: Tox ${{ matrix.environment }} with Python ${{ matrix.python-version }} - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' - # steps: - # - name: GitHub Checkout ๐Ÿ›Ž - # uses: actions/checkout@v4 - # with: - # fetch-depth: 0 - # - name: Setup Python ${{ matrix.python-version }} ๐Ÿ - # uses: actions/setup-python@v5 - # with: - # python-version: ${{ matrix.python-version }} - # - name: Install Tox ๐Ÿ“ฆ - # run: pip install tox - # - name: Run Tox ${{ matrix.environment }} ๐Ÿงช - # run: tox -e ${{ matrix.environment }} + # Detect which files have changed and use this to run jobs conditionally. + # Note that we can't use the workflow-level paths attribute since this + # would skip the workflow entirely, and would prevent us from making the + # aio jobs required to pass (a skip counts as a pass). + check-changes: + runs-on: ubuntu-24.04 + permissions: + pull-requests: read + name: Check changed files + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + outputs: + aio: ${{ steps.changes.outputs.aio }} + build-kayobe-image: ${{ steps.changes.outputs.build-kayobe-image }} + check-tags: ${{ steps.changes.outputs.check-tags }} + steps: + - name: GitHub Checkout + uses: actions/checkout@v4 + + - name: Check changed files + uses: dorny/paths-filter@v3 + id: changes + with: + # Filters are defined in this file. + filters: .github/path-filters.yml + + tox: + runs-on: ubuntu-24.04 + permissions: {} + strategy: + matrix: + include: + - environment: pep8 + python-version: "3.10" + - environment: releasenotes + python-version: "3.10" + - environment: docs + python-version: "3.10" + name: Tox ${{ matrix.environment }} with Python ${{ matrix.python-version }} + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + steps: + - name: GitHub Checkout ๐Ÿ›Ž + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Python ${{ matrix.python-version }} ๐Ÿ + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install Tox ๐Ÿ“ฆ + run: pip install tox + - name: Run Tox ${{ matrix.environment }} ๐Ÿงช + run: tox -e ${{ matrix.environment }} lint: runs-on: ubuntu-24.04 @@ -106,129 +106,129 @@ jobs: # when the parent jobs completed successfully or were skipped. We pass an # 'if' argument to the called workflow to allow running it conditionally. - # build-kayobe-image: - # name: Build Kayobe Image - # needs: - # - check-changes - # uses: ./.github/workflows/stackhpc-build-kayobe-image.yml - # with: - # if: ${{ needs.check-changes.outputs.build-kayobe-image == 'true' }} - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' - - # check-tags: - # name: Check container image tags - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-check-tags.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # if: ${{ needs.check-changes.outputs.check-tags == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-ubuntu-noble-ovs: - # name: aio (Ubuntu Noble OVS) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: ubuntu - # os_release: noble - # ssh_username: ubuntu - # neutron_plugin: ovs - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-ubuntu-noble-ovn: - # name: aio (Ubuntu Noble OVN) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: ubuntu - # os_release: noble - # ssh_username: ubuntu - # neutron_plugin: ovn - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-rocky-9-ovs: - # name: aio (Rocky 9 OVS) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: rocky - # os_release: "9" - # ssh_username: cloud-user - # neutron_plugin: ovs - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-rocky-9-ovn: - # name: aio (Rocky 9 OVN) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: rocky - # os_release: "9" - # ssh_username: cloud-user - # neutron_plugin: ovn - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + build-kayobe-image: + name: Build Kayobe Image + needs: + - check-changes + uses: ./.github/workflows/stackhpc-build-kayobe-image.yml + with: + if: ${{ needs.check-changes.outputs.build-kayobe-image == 'true' }} + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + + check-tags: + name: Check container image tags + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-check-tags.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + if: ${{ needs.check-changes.outputs.check-tags == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-ubuntu-noble-ovs: + name: aio (Ubuntu Noble OVS) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: ubuntu + os_release: noble + ssh_username: ubuntu + neutron_plugin: ovs + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-ubuntu-noble-ovn: + name: aio (Ubuntu Noble OVN) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: ubuntu + os_release: noble + ssh_username: ubuntu + neutron_plugin: ovn + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-rocky-9-ovs: + name: aio (Rocky 9 OVS) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: rocky + os_release: "9" + ssh_username: cloud-user + neutron_plugin: ovs + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-rocky-9-ovn: + name: aio (Rocky 9 OVN) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: rocky + os_release: "9" + ssh_username: cloud-user + neutron_plugin: ovn + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} # Test two upgrade scenarios: Ubuntu Noble OVS and Rocky 9 OVN. - # all-in-one-upgrade-ubuntu-noble-ovs: - # name: aio upgrade (Ubuntu Noble OVS) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: ubuntu - # os_release: noble - # ssh_username: ubuntu - # neutron_plugin: ovs - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # upgrade: true - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-upgrade-rocky-9-ovn: - # name: aio upgrade (Rocky 9 OVN) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: rocky - # os_release: "9" - # ssh_username: cloud-user - # neutron_plugin: ovn - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # upgrade: true - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + all-in-one-upgrade-ubuntu-noble-ovs: + name: aio upgrade (Ubuntu Noble OVS) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: ubuntu + os_release: noble + ssh_username: ubuntu + neutron_plugin: ovs + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + upgrade: true + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-upgrade-rocky-9-ovn: + name: aio upgrade (Rocky 9 OVN) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: rocky + os_release: "9" + ssh_username: cloud-user + neutron_plugin: ovn + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + upgrade: true + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}