Skip to content

Changing the IPA compression alogrithm and updating the IPA image tag to use new compressed images #5873

Changing the IPA compression alogrithm and updating the IPA image tag to use new compressed images

Changing the IPA compression alogrithm and updating the IPA image tag to use new compressed images #5873

---
concurrency:
group: stackhpc-pull-request-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
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'
needs:
- lint
# - tox
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.12"
- environment: releasenotes
python-version: "3.12"
- environment: docs
python-version: "3.12"
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
permissions: {}
strategy:
fail-fast: false
matrix:
include:
# NOTE(upgrade): Keep these in sync with Kayobe's supported Ansible and Python versions (see release notes).
- ansible: "2.18"
python: "3.12"
- ansible: "2.17"
python: "3.10"
name: Ansible ${{ matrix.ansible }} lint with Python ${{ matrix.python }}
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
steps:
- name: GitHub Checkout πŸ›Ž
uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }} 🐍
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install dependencies πŸ“¦
run: |
python -m pip install --upgrade pip
pip install ansible-core==${{ matrix.ansible }}.* ansible-lint -r requirements.txt
- name: Install Ansible Galaxy collections and roles
run: |
ansible-galaxy collection install -r etc/kayobe/ansible/requirements.yml
ansible-galaxy role install -r etc/kayobe/ansible/requirements.yml
- name: Linting code πŸ§ͺ
run: |
ansible-lint -v --force-color etc/kayobe/ansible/.
# A skipped job is treated as success when used as a required status check.
# The registered required status checks refer to the name of the job in the
# called reusable workflow rather than the jobs in this file. The following
# jobs need to run unconditionally to allow GitHub required status checks to
# pass even when there are changed files. The `! failure()` condition runs
# 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-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 Jammy to Noble OVN and Rocky 9 OVN.
all-in-one-upgrade-ubuntu-jammy-to-noble-ovn:
name: aio upgrade (Ubuntu Jammy to 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: jammy
ssh_username: ubuntu
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-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-rocky-9-ovs:
name: aio upgrade (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' }}
upgrade: true
secrets: inherit
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}