|
61 | 61 | env: |
62 | 62 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
63 | 63 |
|
| 64 | + - name: Setup hypervisor device access |
| 65 | + if: runner.os == 'Linux' && matrix.hypervisor == 'kvm' |
| 66 | + run: | |
| 67 | + echo "=== Setting up hypervisor device access ===" |
| 68 | + echo "Current user: $(whoami)" |
| 69 | + echo "User ID and groups: $(id)" |
| 70 | + echo "" |
| 71 | + |
| 72 | + # Check initial device state |
| 73 | + echo "Initial device state:" |
| 74 | + ls -la /dev/kvm 2>/dev/null || echo "kvm device not found initially" |
| 75 | + echo "" |
| 76 | + |
| 77 | + # Check and setup KVM group access |
| 78 | + if getent group kvm >/dev/null 2>&1; then |
| 79 | + echo "✅ KVM group exists" |
| 80 | + echo "Adding user $(whoami) to kvm group..." |
| 81 | + sudo usermod -a -G kvm $(whoami) |
| 82 | + else |
| 83 | + echo "⚠️ KVM group doesn't exist, creating it..." |
| 84 | + sudo groupadd kvm || echo "Failed to create kvm group" |
| 85 | + sudo usermod -a -G kvm $(whoami) || echo "Failed to add user to kvm group" |
| 86 | + fi |
| 87 | + echo "" |
| 88 | + |
| 89 | + # Trigger udev processing to create devices |
| 90 | + echo "Triggering udev device processing..." |
| 91 | + sudo udevadm control --reload-rules |
| 92 | + sudo udevadm trigger --subsystem-match=misc |
| 93 | + sudo udevadm settle |
| 94 | + echo "" |
| 95 | + |
| 96 | + # Set device permissions if devices exist |
| 97 | + if [ -e /dev/kvm ]; then |
| 98 | + echo "Setting KVM device permissions..." |
| 99 | + sudo chown root:kvm /dev/kvm || echo "Failed to set KVM ownership" |
| 100 | + sudo chmod 660 /dev/kvm || echo "Failed to set KVM permissions" |
| 101 | + echo "✅ KVM device configured" |
| 102 | + else |
| 103 | + echo "⚠️ /dev/kvm device not found after module loading" |
| 104 | + fi |
| 105 | + |
| 106 | + # Create new shell session to pick up group membership |
| 107 | + echo "Refreshing group membership..." |
| 108 | + exec sg kvm newgrp $(id -gn) || echo "Could not refresh group membership" |
| 109 | + echo "" |
| 110 | + |
| 111 | + echo "User group membership:" |
| 112 | + groups || echo "Could not determine group membership" |
| 113 | + echo "" |
| 114 | + |
| 115 | + echo "Device access test:" |
| 116 | + if [ -e /dev/kvm ]; then |
| 117 | + if timeout 5 test -r /dev/kvm -a -w /dev/kvm; then |
| 118 | + echo "✅ /dev/kvm is accessible (rw access confirmed)" |
| 119 | + else |
| 120 | + echo "❌ /dev/kvm is not accessible (rw access failed)" |
| 121 | + fi |
| 122 | + else |
| 123 | + echo "❌ /dev/kvm device not present" |
| 124 | + fi |
64 | 125 | - name: fmt |
65 | 126 | run: just fmt-check |
66 | 127 |
|
|
0 commit comments