Skip to content

Commit 4d195fd

Browse files
committed
ci: several changes related to new qemu test, ansible-lint, python versions, ubuntu versions
There is a new QEMU based test which uses the qemu/kvm capability of github action runners. This is the basis for new bootc/image mode tests which we will be rolling out in the near future. ansible-lint requires that the collection path is set so that the requirements it installs are installed in the correct place. There has been some general github action deprecation of python versions and ubuntu versions that we have had to fix. Remove `CONTRIBUTOR` from the list of users who can trigger citest. For more information, see * linux-system-roles/.github#98 * linux-system-roles/.github#94 * linux-system-roles/.github#93 * linux-system-roles/.github#92 * linux-system-roles/.github#91 Signed-off-by: Rich Megginson <[email protected]>
1 parent e7823b3 commit 4d195fd

9 files changed

+139
-15
lines changed

.github/workflows/ansible-lint.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
- name: Install tox, tox-lsr
3333
run: |
3434
set -euxo pipefail
35-
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.4.0"
35+
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.5.1"
3636
3737
- name: Convert role to collection format
3838
id: collection
@@ -80,3 +80,5 @@ jobs:
8080
with:
8181
working_directory: ${{ github.workspace }}/.tox/ansible_collections/${{ env.LSR_ROLE2COLL_NAMESPACE }}/${{ env.LSR_ROLE2COLL_NAME }}
8282
requirements_file: ${{ steps.collection.outputs.coll_req_file }}
83+
env:
84+
ANSIBLE_COLLECTIONS_PATH: ${{ github.workspace }}/.tox

.github/workflows/ansible-managed-var-comment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Install tox, tox-lsr
3131
run: |
3232
set -euxo pipefail
33-
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.4.0"
33+
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.5.1"
3434
3535
- name: Run ansible-plugin-scan
3636
run: |

.github/workflows/ansible-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install tox, tox-lsr
3434
run: |
3535
set -euxo pipefail
36-
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.4.0"
36+
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.5.1"
3737
3838
- name: Convert role to collection format
3939
run: |

.github/workflows/python-unit-test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ jobs:
2121
pyver_os:
2222
- ver: "2.7"
2323
os: ubuntu-22.04
24-
- ver: "3.8"
25-
os: ubuntu-latest
2624
- ver: "3.9"
2725
os: ubuntu-latest
2826
- ver: "3.10"
2927
os: ubuntu-latest
3028
- ver: "3.11"
3129
os: ubuntu-latest
30+
- ver: "3.12"
31+
os: ubuntu-latest
3232
runs-on: ${{ matrix.pyver_os.os }}
3333
steps:
3434
- name: Update git
@@ -65,7 +65,7 @@ jobs:
6565
tox=tox
6666
virtualenv=virtualenv
6767
fi
68-
pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@3.4.0"
68+
pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@3.5.1"
6969
# If you have additional OS dependency packages e.g. libcairo2-dev
7070
# then put them in .github/config/ubuntu-requirements.txt, one
7171
# package per line.
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
---
2+
name: QEMU/KVM Integration tests
3+
on: # yamllint disable-line rule:truthy
4+
pull_request:
5+
merge_group:
6+
branches:
7+
- main
8+
types:
9+
- checks_requested
10+
push:
11+
branches:
12+
- main
13+
workflow_dispatch:
14+
15+
permissions:
16+
contents: read
17+
jobs:
18+
qemu_kvm:
19+
runs-on: ubuntu-latest
20+
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
scenario:
25+
- { image: "centos-9", env: "qemu-ansible-core-2.16" }
26+
- { image: "centos-10", env: "qemu-ansible-core-2.17" }
27+
# ansible/libdnf5 bug: https://issues.redhat.com/browse/RHELMISC-10110
28+
# - { image: "fedora-41", env: "qemu-ansible-core-2.17" }
29+
- { image: "fedora-42", env: "qemu-ansible-core-2.17" }
30+
steps:
31+
- name: Checkout repo
32+
uses: actions/checkout@v4
33+
34+
- name: Check if platform is supported
35+
id: check_platform
36+
run: |
37+
set -euxo pipefail
38+
image="${{ matrix.scenario.image }}"
39+
40+
# convert image to tag formats
41+
platform=
42+
platform_version=
43+
case "$image" in
44+
centos-*) platform=el; platform_version=el"${image#centos-}" ;;
45+
fedora-*) platform=fedora; platform_version="${image/-/}" ;;
46+
esac
47+
supported=
48+
if yq -e '.galaxy_info.galaxy_tags[] | select(. == "'${platform_version}'" or . == "'${platform}'")' meta/main.yml; then
49+
supported=true
50+
fi
51+
52+
echo "supported=$supported" >> "$GITHUB_OUTPUT"
53+
54+
- name: Set up /dev/kvm
55+
if: steps.check_platform.outputs.supported
56+
run: |
57+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm.rules
58+
sudo udevadm control --reload-rules
59+
sudo udevadm trigger --name-match=kvm --settle
60+
ls -l /dev/kvm
61+
62+
- name: Disable man-db to speed up package install
63+
if: steps.check_platform.outputs.supported
64+
run: |
65+
echo "set man-db/auto-update false" | sudo debconf-communicate
66+
sudo dpkg-reconfigure man-db
67+
68+
- name: Install test dependencies
69+
if: steps.check_platform.outputs.supported
70+
run: |
71+
set -euxo pipefail
72+
python3 -m pip install --upgrade pip
73+
sudo apt update
74+
sudo apt install -y --no-install-recommends git ansible-core genisoimage qemu-system-x86
75+
pip3 install "git+https://github.com/linux-system-roles/[email protected]"
76+
77+
- name: Configure tox-lsr
78+
if: steps.check_platform.outputs.supported
79+
run: >-
80+
curl -o ~/.config/linux-system-roles.json
81+
https://raw.githubusercontent.com/linux-system-roles/linux-system-roles.github.io/master/download/linux-system-roles.json
82+
83+
- name: Run qemu/kvm tox integration tests
84+
if: steps.check_platform.outputs.supported
85+
run: >-
86+
tox -e ${{ matrix.scenario.env }} -- --image-name ${{ matrix.scenario.image }} --make-batch
87+
--log-level=debug --skip-tags tests::infiniband --
88+
89+
- name: Test result summary
90+
if: steps.check_platform.outputs.supported && always()
91+
run: |
92+
set -euo pipefail
93+
# some platforms may have setup/cleanup playbooks - need to find the
94+
# actual test playbook that starts with tests_
95+
while read code start end test_files; do
96+
for f in $test_files; do
97+
f="$(basename $f)"
98+
if [[ "$f" =~ ^tests_ ]]; then
99+
break
100+
fi
101+
done
102+
if [ "$code" = "0" ]; then
103+
echo -n "PASS: "
104+
else
105+
echo -n "FAIL: "
106+
fi
107+
echo "$f"
108+
done < batch.report
109+
110+
- name: Show test logs on failure
111+
if: steps.check_platform.outputs.supported && failure()
112+
run: |
113+
set -euo pipefail
114+
for f in tests/*.log; do
115+
echo "::group::$(basename $f)"
116+
cat "$f"
117+
echo "::endgroup::"
118+
done
119+
120+
- name: Set commit status as success with a description that platform is skipped
121+
if: ${{ steps.check_platform.outputs.supported == '' }}
122+
uses: myrotvorets/set-commit-status-action@master
123+
with:
124+
sha: ${{ needs.prepare_vars.outputs.head_sha }}
125+
status: success
126+
context: "${{ github.workflow }} / qemu_kvm (${{ matrix.scenario.image }}, ${{ matrix.scenario.env }}) (pull_request)"
127+
description: The role does not support this platform. Skipping.
128+
targetUrl: ""

.github/workflows/tft.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
if: |
2222
github.event.issue.pull_request
2323
&& contains(github.event.comment.body, '[citest]')
24-
&& (contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR", "CONTRIBUTOR"]'), github.event.comment.author_association)
24+
&& (contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
2525
|| contains('systemroller', github.event.comment.user.login))
2626
runs-on: ubuntu-latest
2727
outputs:

.github/workflows/tft_citest_bad.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
if: |
1212
github.event.issue.pull_request
1313
&& contains(fromJson('["[citest_bad]", "[citest-bad]", "[citest bad]"]'), github.event.comment.body)
14-
&& contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR", "CONTRIBUTOR"]'), github.event.comment.author_association)
14+
&& contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
1515
permissions:
1616
actions: write # for re-running failed jobs: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#re-run-a-job-from-a-workflow-run
1717
runs-on: ubuntu-latest

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# nbde_server
22

3-
[![ansible-lint.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-lint.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-lint.yml) [![ansible-test.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-test.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-test.yml) [![codeql.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/codeql.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/codeql.yml) [![codespell.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/codespell.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/codespell.yml) [![markdownlint.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/markdownlint.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/markdownlint.yml) [![python-unit-test.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/python-unit-test.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/python-unit-test.yml) [![tft.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft.yml) [![tft_citest_bad.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft_citest_bad.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft_citest_bad.yml) [![woke.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/woke.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/woke.yml)
3+
[![ansible-lint.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-lint.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-lint.yml) [![ansible-test.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-test.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/ansible-test.yml) [![codeql.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/codeql.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/codeql.yml) [![codespell.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/codespell.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/codespell.yml) [![markdownlint.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/markdownlint.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/markdownlint.yml) [![python-unit-test.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/python-unit-test.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/python-unit-test.yml) [![qemu-kvm-integration-tests.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/qemu-kvm-integration-tests.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/qemu-kvm-integration-tests.yml) [![tft.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft.yml) [![tft_citest_bad.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft_citest_bad.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/tft_citest_bad.yml) [![woke.yml](https://github.com/linux-system-roles/nbde_server/actions/workflows/woke.yml/badge.svg)](https://github.com/linux-system-roles/nbde_server/actions/workflows/woke.yml)
44

55
Ansible role for configuring Network-Bound Disk Encryption servers (e.g. tang).
66

plans/test_playbooks_parallel.fmf

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,10 @@ provision:
55
# Hence there is no need to define `how` explicitly.
66
- name: control-node1
77
role: control_node
8-
# `connection: system` is required for `how: virtual` to assign VMs a real
9-
# IP making SSH configuration easier.
10-
# This setting is ignored in `artemis`, so we can leave it as is.
11-
connection: system
128
- name: managed-node1
139
role: managed_node
14-
connection: system
1510
- name: managed-node2
1611
role: managed_node
17-
connection: system
1812
environment:
1913
SR_ANSIBLE_VER: 2.17
2014
SR_REPO_NAME: nbde_server

0 commit comments

Comments
 (0)