From e760bb69fd3fc182908d37553d8f047eede32242 Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Wed, 7 May 2025 11:13:24 -0600 Subject: [PATCH] ci: bump tox-lsr to 3.8.0; rename qemu/kvm tests This will make the qemu/kvm tests be tested in either ascending or descending ASCII order. This should give us better test coverage of clean up scenarios which may fail depending on the order of the previous tests. Rename the qemu/kvm tests so that the statuses are shorter and more intuitive. Improve qemu/kvm test failure error reporting. Signed-off-by: Rich Megginson --- .github/workflows/ansible-lint.yml | 2 +- .../workflows/ansible-managed-var-comment.yml | 2 +- .github/workflows/ansible-test.yml | 2 +- .github/workflows/python-unit-test.yml | 2 +- .../workflows/qemu-kvm-integration-tests.yml | 67 ++++++++++++++++--- 5 files changed, 62 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index 83ccb89e..eb5e0d84 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -32,7 +32,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.6.0" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.8.0" - name: Convert role to collection format id: collection diff --git a/.github/workflows/ansible-managed-var-comment.yml b/.github/workflows/ansible-managed-var-comment.yml index eadd836b..ea68dfc0 100644 --- a/.github/workflows/ansible-managed-var-comment.yml +++ b/.github/workflows/ansible-managed-var-comment.yml @@ -30,7 +30,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.6.0" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.8.0" - name: Run ansible-plugin-scan run: | diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index f97384bb..f86338ed 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -33,7 +33,7 @@ jobs: - name: Install tox, tox-lsr run: | set -euxo pipefail - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.6.0" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.8.0" - name: Convert role to collection format run: | diff --git a/.github/workflows/python-unit-test.yml b/.github/workflows/python-unit-test.yml index de92bb91..0a0350c8 100644 --- a/.github/workflows/python-unit-test.yml +++ b/.github/workflows/python-unit-test.yml @@ -65,7 +65,7 @@ jobs: tox=tox virtualenv=virtualenv fi - pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@3.6.0" + pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@3.8.0" # 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 ab0c69f4..5cdf7d63 100644 --- a/.github/workflows/qemu-kvm-integration-tests.yml +++ b/.github/workflows/qemu-kvm-integration-tests.yml @@ -1,5 +1,5 @@ --- -name: QEMU/KVM Integration tests +name: Test on: # yamllint disable-line rule:truthy pull_request: merge_group: @@ -17,18 +17,34 @@ permissions: # This is required for the ability to create/update the Pull request status statuses: write jobs: - qemu_kvm: + scenario: runs-on: ubuntu-latest strategy: fail-fast: false matrix: scenario: + # QEMU - { image: "centos-9", env: "qemu-ansible-core-2.16" } - { image: "centos-10", env: "qemu-ansible-core-2.17" } # ansible/libdnf5 bug: https://issues.redhat.com/browse/RHELMISC-10110 # - { image: "fedora-41", env: "qemu-ansible-core-2.17" } - { image: "fedora-42", env: "qemu-ansible-core-2.17" } + + # container + - { image: "centos-9", env: "container-ansible-core-2.16" } + - { image: "centos-9-bootc", env: "container-ansible-core-2.16" } + # 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-41", env: "container-ansible-core-2.17" } + - { image: "fedora-42", env: "container-ansible-core-2.17" } + - { image: "fedora-41-bootc", env: "container-ansible-core-2.17" } + - { image: "fedora-42-bootc", env: "container-ansible-core-2.17" } + + env: + TOX_ARGS: "--skip-tags tests::infiniband,tests::nvme,tests::scsi" + steps: - name: Checkout repo uses: actions/checkout@v4 @@ -38,6 +54,7 @@ jobs: run: | set -euxo pipefail image="${{ matrix.scenario.image }}" + image="${image%-bootc}" # convert image to tag formats platform= @@ -51,6 +68,20 @@ jobs: supported=true fi + # bootc build support (in buildah) has a separate flag + if [ "${{ matrix.scenario.image }}" != "$image" ]; then + if ! yq -e '.galaxy_info.galaxy_tags[] | select(. == "containerbuild")' meta/main.yml; then + supported= + fi + else + # roles need to opt into support for running in a system container + env="${{ matrix.scenario.env }}" + if [ "${env#container}" != "$env" ] && + ! yq -e '.galaxy_info.galaxy_tags[] | select(. == "container")' meta/main.yml; then + supported= + fi + fi + echo "supported=$supported" >> "$GITHUB_OUTPUT" - name: Set up /dev/kvm @@ -74,7 +105,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 - pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.6.0" + pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.8.0" - name: Configure tox-lsr if: steps.check_platform.outputs.supported @@ -82,14 +113,14 @@ jobs: curl -o ~/.config/linux-system-roles.json https://raw.githubusercontent.com/linux-system-roles/linux-system-roles.github.io/master/download/linux-system-roles.json - - name: Run qemu/kvm tox integration tests - if: steps.check_platform.outputs.supported + - name: Run qemu integration tests + if: steps.check_platform.outputs.supported && startsWith(matrix.scenario.env, 'qemu') run: >- tox -e ${{ matrix.scenario.env }} -- --image-name ${{ matrix.scenario.image }} --make-batch --log-level=debug --skip-tags tests::infiniband,tests::nvme,tests::scsi -- - - name: Test result summary - if: steps.check_platform.outputs.supported && always() + - name: Qemu result summary + if: steps.check_platform.outputs.supported && startsWith(matrix.scenario.env, 'qemu') && always() run: | set -euo pipefail # some platforms may have setup/cleanup playbooks - need to find the @@ -109,6 +140,24 @@ jobs: echo "$f" done < batch.report + - name: Run container tox integration tests + if: steps.check_platform.outputs.supported && startsWith(matrix.scenario.env, 'container') + run: | + set -euo pipefail + # HACK: debug.py/profile.py setup is broken + export LSR_CONTAINER_PROFILE=false + export LSR_CONTAINER_PRETTY=false + rc=0 + for t in tests/tests_*.yml; do + if tox -e ${{ matrix.scenario.env }} -- --image-name ${{ matrix.scenario.image }} $t > ${t}.log 2>&1; then + echo "PASS: $(basename $t)" + else + echo "FAIL: $(basename $t)" + rc=1 + fi + done + exit $rc + - name: Upload test logs on failure if: failure() uses: actions/upload-artifact@v4 @@ -127,7 +176,7 @@ jobs: run: | set -euo pipefail for f in tests/*.log; do - if FAIL=$(grep -B100 -A30 "fatal:" "$f"); then + if FAIL=$(grep -E -B100 -A30 "fatal:|An exception occurred" "$f"); then echo "::group::$(basename $f)" echo "$FAIL" echo "::endgroup::" @@ -139,6 +188,6 @@ jobs: uses: myrotvorets/set-commit-status-action@master with: status: success - context: "${{ github.workflow }} / qemu_kvm (${{ matrix.scenario.image }}, ${{ matrix.scenario.env }}) (pull_request)" + context: "${{ github.workflow }} / scenario (${{ matrix.scenario.image }}, ${{ matrix.scenario.env }}) (pull_request)" description: The role does not support this platform. Skipping. targetUrl: ""