Skip to content

Commit dde2438

Browse files
committed
Check KVM support on any X64 Linux runner
This includes large runners we may provision during outages of self-hosted runners. Change-type: patch Signed-off-by: Kyle Harding <[email protected]>
1 parent d85b9d5 commit dde2438

File tree

3 files changed

+54
-24
lines changed

3 files changed

+54
-24
lines changed

.github/actions/test/action.yml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,24 @@ runs:
6868
# https://github.com/reactivecircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
6969
# https://github.com/ankidroid/Anki-Android/commit/3a5ecaa9837691817022d11b0dbe383b8e82d9fe
7070
# https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/
71-
- name: Enable KVM group perms
72-
if: contains(fromJSON(env.os_value),'ubuntu-latest') || contains(fromJSON(env.os_value),'ubuntu-22.04')
73-
shell: bash
74-
run: |
75-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
76-
sudo udevadm control --reload-rules
77-
sudo udevadm trigger -v --name-match=kvm
78-
79-
- name: Test KVM
80-
if: contains(fromJSON(env.os_value),'ubuntu-latest') || contains(fromJSON(env.os_value),'ubuntu-22.04')
71+
- name: Check KVM permissions
8172
shell: bash
73+
if: runner.os == 'Linux' && runner.arch == 'X64'
74+
continue-on-error: true
8275
run: |
8376
set -x
84-
sudo apt-get update
85-
sudo apt-get install -y --no-install-recommends cpu-checker
8677
87-
ls -al /dev/kvm
88-
test -w /dev/kvm
78+
if ! command -v kvm-ok > /dev/null 2>&1
79+
then
80+
sudo apt-get update
81+
sudo apt-get install -y cpu-checker
82+
fi
83+
84+
if ! kvm-ok
85+
then
86+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
87+
sudo udevadm control --reload-rules
88+
sudo udevadm trigger -v --name-match=kvm
89+
fi
90+
8991
kvm-ok

.github/workflows/flowzone.yml

Lines changed: 19 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flowzone.yml

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3355,13 +3355,27 @@ jobs:
33553355
# https://github.com/reactivecircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
33563356
# https://github.com/ankidroid/Anki-Android/commit/3a5ecaa9837691817022d11b0dbe383b8e82d9fe
33573357
# https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/
3358-
- name: Enable KVM group perms
3359-
if: contains(fromJSON('["ubuntu-22.04","ubuntu-24.04","ubuntu-latest"]'), matrix.runs_on[0])
3358+
- name: Check KVM permissions
3359+
if: runner.os == 'Linux' && runner.arch == 'X64'
33603360
continue-on-error: true
33613361
run: |
3362-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
3363-
sudo udevadm control --reload-rules
3364-
sudo udevadm trigger -v --name-match=kvm
3362+
if ! command -v kvm-ok > /dev/null 2>&1
3363+
then
3364+
sudo apt-get update
3365+
sudo apt-get install -y cpu-checker
3366+
fi
3367+
3368+
if ! kvm-ok
3369+
then
3370+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
3371+
sudo udevadm control --reload-rules
3372+
sudo udevadm trigger -v --name-match=kvm
3373+
fi
3374+
3375+
if ! kvm-ok
3376+
then
3377+
echo "::warn::KVM is not supported"
3378+
fi
33653379
33663380
# run docker compose tests and print the logs from all services
33673381
- name: Run docker compose tests

0 commit comments

Comments
 (0)