|
| 1 | +# bcvk development VM management |
| 2 | +# |
| 3 | +# The dev binary is overlaid onto /usr via systemd-sysext. After |
| 4 | +# rebuilding with `just sysext`, run `just bcvk sync` to |
| 5 | +# refresh the overlay (~30s total cycle). |
| 6 | +# |
| 7 | +# Usage: |
| 8 | +# just bcvk up # Build sysext + launch persistent VM |
| 9 | +# just bcvk sync # Rebuild sysext + refresh overlay (~30s) |
| 10 | +# just bcvk ssh # SSH into the VM |
| 11 | +# just bcvk ephemeral # Ephemeral VM (full image, destroyed on exit) |
| 12 | + |
| 13 | +base_img := env("BOOTC_base_img", "localhost/bootc") |
| 14 | + |
| 15 | +# List available recipes |
| 16 | +[private] |
| 17 | +default: |
| 18 | + @just --list bcvk |
| 19 | + |
| 20 | +# Run an ephemeral VM from the latest build and SSH in (destroyed on exit) |
| 21 | +[group('ephemeral')] |
| 22 | +ephemeral: |
| 23 | + just build |
| 24 | + bcvk ephemeral run-ssh {{base_img}} |
| 25 | + |
| 26 | +# Launch persistent development VM with sysext |
| 27 | +[group('vm')] |
| 28 | +up: |
| 29 | + just sysext |
| 30 | + cargo xtask bcvk vm |
| 31 | + |
| 32 | +# Rebuild sysext and verify the new binary in the running VM |
| 33 | +[group('vm')] |
| 34 | +sync: |
| 35 | + just sysext |
| 36 | + cargo xtask bcvk sync |
| 37 | + |
| 38 | +# SSH into development VM (interactive shell if no args given) |
| 39 | +[group('vm')] |
| 40 | +ssh *ARGS: |
| 41 | + cargo xtask bcvk ssh {{ARGS}} |
| 42 | + |
| 43 | +# Stop and remove development VM |
| 44 | +[group('vm')] |
| 45 | +down: |
| 46 | + cargo xtask bcvk down |
| 47 | + |
| 48 | +# Show development VM status |
| 49 | +[group('vm')] |
| 50 | +status: |
| 51 | + cargo xtask bcvk status |
| 52 | + |
| 53 | +# Watch development VM logs |
| 54 | +[group('vm')] |
| 55 | +logs: |
| 56 | + cargo xtask bcvk logs |
| 57 | + |
| 58 | +# Show sysext status in development VM |
| 59 | +[group('vm')] |
| 60 | +sysext-status: |
| 61 | + cargo xtask bcvk ssh systemd-sysext status |
| 62 | + |
| 63 | +# Restart development VM |
| 64 | +[group('vm')] |
| 65 | +restart: |
| 66 | + #!/bin/bash |
| 67 | + set -euo pipefail |
| 68 | + echo "Restarting development VM..." |
| 69 | + cargo xtask bcvk ssh -- sudo systemctl reboot || true |
| 70 | + sleep 5 |
| 71 | + echo "Waiting for VM to come back up..." |
| 72 | + for i in {1..30}; do |
| 73 | + if cargo xtask bcvk ssh -- echo "VM is up" 2>/dev/null; then |
| 74 | + echo "VM is back online!" |
| 75 | + break |
| 76 | + fi |
| 77 | + echo "Waiting... (attempt $i/30)" |
| 78 | + sleep 2 |
| 79 | + done |
| 80 | + |
| 81 | +# Clean up all development resources (VM + sysext) |
| 82 | +[group('vm')] |
| 83 | +clean: |
| 84 | + cargo xtask bcvk clean |
0 commit comments