Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ansible-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ansible-managed-var-comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ansible-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
67 changes: 58 additions & 9 deletions .github/workflows/qemu-kvm-integration-tests.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: QEMU/KVM Integration tests
name: Test
on: # yamllint disable-line rule:truthy
pull_request:
merge_group:
Expand All @@ -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
Expand All @@ -38,6 +54,7 @@ jobs:
run: |
set -euxo pipefail
image="${{ matrix.scenario.image }}"
image="${image%-bootc}"

# convert image to tag formats
platform=
Expand All @@ -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
Expand All @@ -74,22 +105,22 @@ 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
run: >-
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
Expand All @@ -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
Expand All @@ -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::"
Expand All @@ -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: ""
Loading