|  | 
| 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 | +          # Create new shell session to pick up group membership | 
|  | 97 | +          echo "Refreshing group membership..." | 
|  | 98 | +          exec sg kvm newgrp $(id -gn) || echo "Could not refresh group membership" | 
|  | 99 | +          echo "" | 
|  | 100 | +           | 
|  | 101 | +          echo "User group membership:" | 
|  | 102 | +          groups || echo "Could not determine group membership" | 
|  | 103 | +          echo "" | 
|  | 104 | +           | 
|  | 105 | +          echo "Device access test:" | 
|  | 106 | +          if [ -e /dev/kvm ]; then | 
|  | 107 | +          if timeout 5 test -r /dev/kvm -a -w /dev/kvm; then | 
|  | 108 | +              echo "✅ /dev/kvm is accessible (rw access confirmed)" | 
|  | 109 | +          else | 
|  | 110 | +              echo "❌ /dev/kvm is not accessible (rw access failed)" | 
|  | 111 | +          fi | 
|  | 112 | +          else | 
|  | 113 | +          echo "❌ /dev/kvm device not present" | 
|  | 114 | +          fi | 
| 64 | 115 |       - name: fmt | 
| 65 | 116 |         run: just fmt-check | 
| 66 | 117 | 
 | 
|  | 
0 commit comments