@@ -11,75 +11,119 @@ on: # yamllint disable-line rule:truthy
1111 branches :
1212 - main
1313 workflow_dispatch :
14- env :
15- TOX_ENV : qemu-ansible-core-2.16
1614
1715permissions :
1816 contents : read
17+ # This is required for the ability to create/update the Pull request status
18+ statuses : write
1919jobs :
20- tox :
20+ qemu_kvm :
2121 runs-on : ubuntu-latest
2222
2323 strategy :
2424 fail-fast : false
2525 matrix :
26- image :
27- - centos-9
28- - centos-10
26+ scenario :
27+ - { image: " centos-9", env: "qemu-ansible-core-2.16" }
28+ - { image: " centos-10", env: "qemu-ansible-core-2.17" }
2929 # ansible/libdnf5 bug: https://issues.redhat.com/browse/RHELMISC-10110
30- # - fedora-41
31- - fedora-42
32-
30+ # - { image: "fedora-41", env: "qemu-ansible-core-2.17" }
31+ - { image: "fedora-42", env: "qemu-ansible-core-2.17" }
3332 steps :
33+ - name : Checkout repo
34+ uses : actions/checkout@v4
35+
36+ - name : Check if platform is supported
37+ id : check_platform
38+ run : |
39+ set -euxo pipefail
40+ image="${{ matrix.scenario.image }}"
41+
42+ # convert image to tag formats
43+ platform=
44+ platform_version=
45+ case "$image" in
46+ centos-*) platform=el; platform_version=el"${image#centos-}" ;;
47+ fedora-*) platform=fedora; platform_version="${image/-/}" ;;
48+ esac
49+ supported=
50+ if yq -e '.galaxy_info.galaxy_tags[] | select(. == "'${platform_version}'" or . == "'${platform}'")' meta/main.yml; then
51+ supported=true
52+ fi
53+
54+ echo "supported=$supported" >> "$GITHUB_OUTPUT"
55+
3456 - name : Set up /dev/kvm
57+ if : steps.check_platform.outputs.supported
3558 run : |
3659 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm.rules
3760 sudo udevadm control --reload-rules
3861 sudo udevadm trigger --name-match=kvm --settle
3962 ls -l /dev/kvm
4063
4164 - name : Disable man-db to speed up package install
65+ if : steps.check_platform.outputs.supported
4266 run : |
4367 echo "set man-db/auto-update false" | sudo debconf-communicate
4468 sudo dpkg-reconfigure man-db
4569
4670 - name : Install test dependencies
71+ if : steps.check_platform.outputs.supported
4772 run : |
4873 set -euxo pipefail
4974 python3 -m pip install --upgrade pip
5075 sudo apt update
5176 sudo apt install -y --no-install-recommends git ansible-core genisoimage qemu-system-x86
5277 pip3 install "git+https://github.com/linux-system-roles/[email protected] " 5378
54- - name : Checkout repo
55- uses : actions/checkout@v4
56-
5779 - name : Configure tox-lsr
58- run : |
59- 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
80+ if : steps.check_platform.outputs.supported
81+ run : >-
82+ curl -o ~/.config/linux-system-roles.json
83+ https://raw.githubusercontent.com/linux-system-roles/linux-system-roles.github.io/master/download/linux-system-roles.json
6084
61- - name : Run tox integration tests
62- run : tox -e ${{ env.TOX_ENV }} -- --image-name ${{ matrix.image }} --make-batch --log-level=debug --
85+ - name : Run qemu/kvm tox integration tests
86+ if : steps.check_platform.outputs.supported
87+ run : >-
88+ tox -e ${{ matrix.scenario.env }} -- --image-name ${{ matrix.scenario.image }} --make-batch
89+ --log-level=debug --skip-tags tests::infiniband --
6390
6491 - name : Test result summary
65- if : always()
92+ if : steps.check_platform.outputs.supported && always()
6693 run : |
6794 set -euo pipefail
68- while read code start end f; do
95+ # some platforms may have setup/cleanup playbooks - need to find the
96+ # actual test playbook that starts with tests_
97+ while read code start end test_files; do
98+ for f in $test_files; do
99+ f="$(basename $f)"
100+ if [[ "$f" =~ ^tests_ ]]; then
101+ break
102+ fi
103+ done
69104 if [ "$code" = "0" ]; then
70105 echo -n "PASS: "
71106 else
72107 echo -n "FAIL: "
73108 fi
74- echo "$(basename $f) "
109+ echo "$f "
75110 done < batch.report
76111
77112 - name : Show test logs on failure
78- if : failure()
113+ if : steps.check_platform.outputs.supported && failure()
79114 run : |
80115 set -euo pipefail
81116 for f in tests/*.log; do
82117 echo "::group::$(basename $f)"
83118 cat "$f"
84119 echo "::endgroup::"
85120 done
121+
122+ - name : Set commit status as success with a description that platform is skipped
123+ if : ${{ steps.check_platform.outputs.supported == '' }}
124+ uses : myrotvorets/set-commit-status-action@master
125+ with :
126+ status : success
127+ context : " ${{ github.workflow }} / qemu_kvm (${{ matrix.scenario.image }}, ${{ matrix.scenario.env }}) (pull_request)"
128+ description : The role does not support this platform. Skipping.
129+ targetUrl : " "
0 commit comments