From d20488883a7955480f3cf1c8fa2c03fa152c911e Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Tue, 10 Nov 2026 06:50:56 -0700 Subject: [PATCH] ci: support Fedora 45, Ansible 2.22; drop Fedora 43 Fedora 45 is now officially released. Add this to our CI test matrix. Fedora 43 will be EOL soon. Fedora 45 requires Ansible 2.22. Ansible 2.22 is officially released. Ansible 2.22 requires python 3.13 or later, so add that to the qemu/kvm test matrix. For tft, the python version is handled in the tft-tests library. ansible-core 2.19 is EOL. Only support 2.20 and later, and the versions we need for RedHat os_family testing. ansible-test 2.22 running in a container on ubuntu is affected by https://bugs.launchpad.net/ubuntu/+source/podman/+bug/2154379 so for now run ansible-test 2.22 on ubuntu-26.04 and not in a container. Assisted-by: Codex model GPT-6-Sol medium Signed-off-by: Rich Megginson --- .github/workflows/actions.lock | 3 +- .github/workflows/ansible-lint.yml | 4 +-- .../workflows/ansible-managed-var-comment.yml | 2 +- .github/workflows/ansible-test.yml | 31 +++++++++++++------ .github/workflows/python-unit-test.yml | 2 +- .../workflows/qemu-kvm-integration-tests.yml | 15 ++++++--- .github/workflows/tft.yml | 7 +++-- 7 files changed, 43 insertions(+), 21 deletions(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index 1c6d4fa1..8d0216b7 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -47,6 +47,7 @@ workflows: - 'linux-system-roles/.github@main' '.github/workflows/qemu-kvm-integration-tests.yml': - 'actions/checkout@v7.0.1' + - 'actions/setup-python@v7.1.0' - 'actions/upload-artifact@v7.0.2' - 'linux-system-roles/.github@main' '.github/workflows/test_converting_readme.yml': @@ -106,7 +107,7 @@ dependencies: repo_id: 259445878 'linux-system-roles/.github@main': ref: 'main' - commit: 'sha1-df8dd90550279264a8ff13a2153ff747d79047a1' + commit: 'sha1-54e8132c2d5c8ea4edf115040dc11cf0d5b2dfff' owner_id: 28014670 repo_id: 320092621 'sclorg/testing-farm-as-github-action@v4.3.1': diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index 59ab3819..0202b8f2 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -27,7 +27,7 @@ jobs: # https://github.com/ansible-collections/partner-certification-checker/blob/main/.github/workflows/certification-reusable.yml#L108 versions: - { ansible_lint: "24.*", ansible: "2.16.*", python: "3.12" } - - { ansible_lint: "26.*", ansible: "2.20.*", python: "3.13" } + - { ansible_lint: "26.*", ansible: "2.22.*", python: "3.14" } steps: - name: Get PR head SHA and context if: github.event_name == 'issue_comment' @@ -68,7 +68,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@bfd11b23a1ed56388ea7ab8263d30e3172553a7c" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@b8adb1a54303ce668b39fedf86e89cd0895df948" - name: Set up Python uses: actions/setup-python@v7.1.0 diff --git a/.github/workflows/ansible-managed-var-comment.yml b/.github/workflows/ansible-managed-var-comment.yml index bc2fe264..e543dadb 100644 --- a/.github/workflows/ansible-managed-var-comment.yml +++ b/.github/workflows/ansible-managed-var-comment.yml @@ -57,7 +57,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@bfd11b23a1ed56388ea7ab8263d30e3172553a7c" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@b8adb1a54303ce668b39fedf86e89cd0895df948" - name: Run ansible-plugin-scan run: | diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 1bb62467..16e5dc53 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -18,18 +18,18 @@ permissions: jobs: ansible_test: if: inputs.requested || github.event_name != 'issue_comment' - runs-on: ubuntu-latest + runs-on: ${{ matrix.versions.runner_os }} strategy: fail-fast: false # get all results, not just the first failure matrix: versions: - - { ansible: "2-14", python: "3.9" } - - { ansible: "2-16", python: "3.11" } - - { ansible: "2-17", python: "3.12" } - - { ansible: "2-18", python: "3.12" } - - { ansible: "2-19", python: "3.13" } - - { ansible: "2-20", python: "3.13" } - - { ansible: "milestone", python: "3.13" } + - { ansible: "2-14", python: "3.9", runner_os: "ubuntu-latest" } + - { ansible: "2-16", python: "3.11", runner_os: "ubuntu-latest" } + - { ansible: "2-17", python: "3.12", runner_os: "ubuntu-latest" } + - { ansible: "2-20", python: "3.13", runner_os: "ubuntu-latest" } + - { ansible: "2-21", python: "3.13", runner_os: "ubuntu-latest" } + - { ansible: "2-22", python: "3.14", runner_os: "ubuntu-26.04" } + - { ansible: "milestone", python: "3.14", runner_os: "ubuntu-latest" } steps: - name: Get PR head SHA and context if: github.event_name == 'issue_comment' @@ -71,7 +71,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@bfd11b23a1ed56388ea7ab8263d30e3172553a7c" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@b8adb1a54303ce668b39fedf86e89cd0895df948" - name: Set up Python uses: actions/setup-python@v7.1.0 @@ -82,11 +82,24 @@ jobs: run: tox -e collection - name: Run ansible-test + if: matrix.versions.ansible != '2-22' run: | tox \ -x testenv:ansible-test-${{ matrix.versions.ansible }}.basepython="python${{ matrix.versions.python }}" \ -e ansible-test-${{ matrix.versions.ansible }} + # https://bugs.launchpad.net/ubuntu/+source/podman/+bug/2154379 + - name: Run ansible-test 2.22 without a container + if: matrix.versions.ansible == '2-22' + run: | + set -euo pipefail + python -m pip install 'ansible-core==2.22.*' + tempdir=$(mktemp -d) + trap 'rm -rf "$tempdir"' EXIT + cp -a .tox/ansible_collections "$tempdir/" + cd "$tempdir/ansible_collections/fedora/linux_system_roles" + ansible-test sanity + - name: Set final commit status if: always() && github.event_name == 'issue_comment' && steps.head_sha_context.outputs.head_sha != '' uses: linux-system-roles/.github/github-actions/commit-status@main diff --git a/.github/workflows/python-unit-test.yml b/.github/workflows/python-unit-test.yml index 93dd9bd1..7dbd88a5 100644 --- a/.github/workflows/python-unit-test.yml +++ b/.github/workflows/python-unit-test.yml @@ -94,7 +94,7 @@ jobs: tox=tox virtualenv=virtualenv fi - pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@bfd11b23a1ed56388ea7ab8263d30e3172553a7c" + pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@b8adb1a54303ce668b39fedf86e89cd0895df948" # If you have additional OS dependency packages e.g. libcairo2-dev # then put them in .github/config/ubuntu-requirements.txt, one # package per line. diff --git a/.github/workflows/qemu-kvm-integration-tests.yml b/.github/workflows/qemu-kvm-integration-tests.yml index 4dfb898e..6b18a30d 100644 --- a/.github/workflows/qemu-kvm-integration-tests.yml +++ b/.github/workflows/qemu-kvm-integration-tests.yml @@ -25,8 +25,8 @@ jobs: # QEMU - { image: "centos-9", env: "qemu-ansible-core-2-16" } - { image: "centos-10", env: "qemu-ansible-core-2-17" } - - { image: "fedora-43", env: "qemu-ansible-core-2-20" } - { image: "fedora-44", env: "qemu-ansible-core-2-21" } + - { image: "fedora-45", env: "qemu-ansible-core-2-22", python: "3.14" } - { image: "leap-15.6", env: "qemu-ansible-core-2-18" } - { image: "leap-16.0", env: "qemu-ansible-core-2-20" } @@ -36,11 +36,12 @@ jobs: # broken on non-running dbus # - { image: "centos-10", env: "container-ansible-core-2-17" } - { image: "centos-10-bootc", env: "container-ansible-core-2-17" } - - { image: "fedora-43", env: "container-ansible-core-2-20" } - { image: "fedora-44", env: "container-ansible-core-2-21" } - - { image: "fedora-43-bootc", env: "container-ansible-core-2-20" } + - { image: "fedora-45", env: "container-ansible-core-2-22", python: "3.14" } # ansible-core 2.21 cannot enable services using service module in bootc images - { image: "fedora-44-bootc", env: "container-ansible-core-2-20" } + # fedora-45 requires ansible-core 2.22 + - { image: "fedora-45-bootc", env: "container-ansible-core-2-22", python: "3.14" } env: TOX_ARGS: "--skip-tags tests::infiniband,tests::nvme,tests::scsi" @@ -127,6 +128,12 @@ jobs: echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db + - name: Set up Python + if: steps.check_platform.outputs.supported && matrix.scenario.python != '' + uses: actions/setup-python@v7.1.0 + with: + python-version: ${{ matrix.scenario.python }} + - name: Install test dependencies if: steps.check_platform.outputs.supported run: | @@ -134,7 +141,7 @@ jobs: python3 -m pip install --upgrade pip sudo apt update sudo apt install -y --no-install-recommends git ansible-core genisoimage qemu-system-x86 qemu-utils - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@bfd11b23a1ed56388ea7ab8263d30e3172553a7c" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@b8adb1a54303ce668b39fedf86e89cd0895df948" - name: Check for podman version 5 or higher id: check_podman_version diff --git a/.github/workflows/tft.yml b/.github/workflows/tft.yml index cc903726..06e363f1 100644 --- a/.github/workflows/tft.yml +++ b/.github/workflows/tft.yml @@ -80,8 +80,8 @@ jobs: meta_main=meta/main.yml # All Fedora are supported, add latest Fedora versions to supported_platforms if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qi fedora$; then - supported_platforms+=" Fedora-43" supported_platforms+=" Fedora-44" + supported_platforms+=" Fedora-45" fi # Specific Fedora versions supported if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qiP 'fedora\d+$'; then @@ -107,10 +107,10 @@ jobs: matrix: include: # Ensure ansible version is a string! - - platform: Fedora-43 - ansible_version: "2.20" - platform: Fedora-44 ansible_version: "2.21" + - platform: Fedora-45 + ansible_version: "2.22" - platform: CentOS-7-latest ansible_version: "2.9" - platform: CentOS-Stream-8 @@ -183,6 +183,7 @@ jobs: environment_settings: '{ "provisioning": { "tags": { "BusinessUnit": "system_roles" } } }' # Keeping SR_ARTIFACTS_URL at the bottom makes the link in logs clickable variables: "SR_ANSIBLE_VER=${{ matrix.ansible_version }};\ + SR_ANSIBLE_VER_PRE_RELEASE=${{ matrix.pre_release }};\ SR_REPO_NAME=${{ github.event.repository.name }};\ SR_GITHUB_ORG=${{ github.repository_owner }};\ SR_PR_NUM=${{ github.event.issue.number || github.event.number }};\