GitHub-hosted runners give you Ubuntu, Windows and macOS. VM Actions gives you
the rest. Each action in this organization boots a real, fully installed
operating system under QEMU inside an ordinary ubuntu-latest runner, syncs
your checked-out source tree into the guest, and runs your build and test
commands there -- on the real kernel, the real libc, the real package manager,
and, if you want, a real non-x86 CPU. No self-hosted runner, no container
trickery, no cross-compilation guesswork.
A job is one step:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: vmactions/freebsd-vm@v1
with:
usesh: true
prepare: |
pkg install -y gmake
run: |
./configure
gmake
gmake checkEverything else is optional: pick a release and an arch, choose how the
workspace is shared (rsync, sshfs, nfs or scp), pass environment
variables and secrets in with envs, set mem / cpu, forward ports with
nat, run later workflow steps directly inside the VM with a custom shell,
cache the VM image after prepare so repeat builds skip it, and switch on
debug-on-error to get a VNC shell into the machine at the exact moment your
build broke.
Writing the workflow is optional too: install the vmactions-ci skill and ask your coding agent for "run my tests on NetBSD aarch64" -- it knows the actions, the releases, the per-OS default shells and the footguns.
Pick a system from the table below. Images are built and booted by AnyVM.
| VM | GitHub Actions | Arch | Debug Shell |
|---|---|---|---|
| FreeBSD |
vmactions/freebsd-vm@v1 | x86_64, aarch64, riscv64, powerpc64 | debug on error |
| OpenBSD |
vmactions/openbsd-vm@v1 | x86_64, aarch64, riscv64, sparc64 | debug on error |
| NetBSD |
vmactions/netbsd-vm@v1 | x86_64, aarch64, riscv64, sparc64 | debug on error |
| Solaris |
vmactions/solaris-vm@v1 | x86_64 | debug on error |
| DragonFlyBSD |
vmactions/dragonflybsd-vm@v1 | x86_64 | debug on error |
| MidnightBSD |
vmactions/midnightbsd-vm@v1 | x86_64 | debug on error |
| GhostBSD |
vmactions/ghostbsd-vm@v1 | x86_64 | debug on error |
| OmniOS |
vmactions/omnios-vm@v1 | x86_64 | debug on error |
| OpenIndiana |
vmactions/openindiana-vm@v1 | x86_64 | debug on error |
| Haiku OS |
vmactions/haiku-vm@v1 | x86_64 | debug on error |
| Tribblix |
vmactions/tribblix-vm@v1 | x86_64 | debug on error |
| Blissos(Android) |
vmactions/blissos-vm@v1 | x86_64 | debug on error |
| GNU Hurd |
vmactions/hurd-vm@v1 | x86_64, i386 | debug on error |
| OpenEuler |
vmactions/openeuler-vm@v1 | x86_64, aarch64, riscv64, loongarch64 | debug on error |