Skip to content

Commit 74f0846

Browse files
committed
Attempt to enable KVM 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 7b59461 commit 74f0846

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
@@ -3349,13 +3349,27 @@ jobs:
33493349
# https://github.com/reactivecircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
33503350
# https://github.com/ankidroid/Anki-Android/commit/3a5ecaa9837691817022d11b0dbe383b8e82d9fe
33513351
# https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/
3352-
- name: Enable KVM group perms
3353-
if: contains(fromJSON('["ubuntu-22.04","ubuntu-24.04","ubuntu-latest"]'), matrix.runs_on[0])
3352+
- name: Check KVM permissions
3353+
if: runner.os == 'Linux' && runner.arch == 'X64'
33543354
continue-on-error: true
33553355
run: |
3356-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
3357-
sudo udevadm control --reload-rules
3358-
sudo udevadm trigger -v --name-match=kvm
3356+
if ! command -v kvm-ok > /dev/null 2>&1
3357+
then
3358+
sudo apt-get update
3359+
sudo apt-get install -y cpu-checker
3360+
fi
3361+
3362+
if ! kvm-ok
3363+
then
3364+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
3365+
sudo udevadm control --reload-rules
3366+
sudo udevadm trigger -v --name-match=kvm
3367+
fi
3368+
3369+
if ! kvm-ok
3370+
then
3371+
echo "::warn::KVM is not enabled"
3372+
fi
33593373
33603374
# run docker compose tests and print the logs from all services
33613375
- name: Run docker compose tests

0 commit comments

Comments
 (0)