Changelog
July 30, 2026 ยท View on GitHub
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Add support for FreeBSD on RISC-V 64 (
riscv64)
Changed
- OpenBSD on ARM64 now boots with the same EDK II UEFI firmware (
uefi.fd) as every other ARM64 guest, instead of a separate Linaro UEFI build. The QEMU machine type for OpenBSD on ARM64 is nowvirt,acpi=off, which makes the kernel fall back to the device tree instead of hanging during ACPI attach. This removes the dependency on the Linaro release server, which no longer exists
Fixed
- Don't log the
Tearing down VMgroup whenshutdown_vmisfalse, since the VM is not being torn down in that case (#109)
1.3.0 - 2026-06-22
Added
-
Add support for FreeBSD 15.1 (#153)
-
Add a
--environment-variablespost-flag to thecpa.shcustom shell for forwarding additional environment variables to the VM on a per-step basis, without having to declare them on theStart VMstep via theenvironment_variablesinput (#145):- name: Run a command with extra environment variables shell: cpa.sh {0} --environment-variables MY_ENV1 MY_ENV2 env: MY_ENV1: value1 MY_ENV2: value2 run: echo "$MY_ENV1 $MY_ENV2"
1.2.0 - 2026-05-30
Added
- Add support for OpenBSD 7.9 (#144)
Changed
- Updated QEMU to 10.2.3
Security
- Bump resources to a release that use immutable releases, providing integrity verification for downloaded artifacts (#147)
1.1.0 - 2026-05-17
Added
-
Add support for DragonFly BSD (#19)
-
Add support for MidnightBSD (#102)
-
Add support for FreeBSD 14.4 (#122)
-
Add support for OmniOS r151058
-
New syntax for multiple steps (#83). Instead of invoking the action multiple times it's now possible to use a custom shell when running commands:
jobs: custom-shell: runs-on: ubuntu-latest defaults: run: shell: cpa.sh {0} steps: - name: Start VM uses: cross-platform-actions/action@master with: operating_system: freebsd architecture: x86-64 version: '15.0' - name: Run command using custom shell run: '[ "`uname`" = FreeBSD ]'Each custom-shell step automatically synchronizes files in both directions: runner-to-vm before the step runs and vm-to-runner after. Pass
--sync-files DIRECTIONafter the file argument to change this (both(default),none(skip sync),runner-to-vm, orvm-to-runner), or usecpa.sh --sync-filesstandalone to sync on demand without running a command:- name: Sync files from runner to VM run: cpa.sh --sync-files runner-to-vm -
Reboot mode for rebooting the VM and waiting for it to come back up (#103, #118).
cpa.sh --rebootissues the reboot and blocks until the VM is reachable again:- name: Reboot VM run: cpa.sh --reboot
Security
- Bump builders to releases that use immutable releases, providing integrity verification for downloaded artifacts (#140)
Deprecated
-
The
runinput parameter has been deprecated and is now optional. Use the custom shell (shell: cpa.sh {0}) in subsequent steps to run commands in the virtual machine instead. -
The
shutdown_vminput parameter has been deprecated and will be removed in a future release. There is no replacement. When unset, it now defaults totrueif therunparameter is provided (preserving the legacy behavior) andfalseotherwise (so the VM stays alive across subsequent custom-shell steps without needing to specify it).
1.0.0 - 2026-04-12
Fixed
- Fix #108: Fix file ownership on Haiku after rsync, resolving git
safe.directoryerrors
Changed
- Breaking: Update the requirement of Node for running this action from version 20 to 24.
Removed
- Breaking: Remove support for running on macOS runners. Only Linux runners
(e.g.
ubuntu-latest) are now supported. This was deprecated in v0.25.0. - Breaking: Remove the Xhyve hypervisor and the
hypervisorinput parameter. QEMU is now the only supported hypervisor. These were deprecated in v0.25.0.
0.32.0 - 2025-12-21
Added
- Add support for OmniOS
0.31.0 - 2025-12-15
Added
- Add support for FreeBSD 15.0 (#114)
Fixed
- Fix empty hostname (#113)
0.30.0 - 2025-11-04
Added
- Document how to report a security vulnerability
- Add support for OpenBSD 7.8 (#112)
Security
- Fix potential code injection in the GitHub release workflow (#GHSA-928q-63gf-mc2x)
0.29.0 - 2025-07-22
Added
- Add support for FreeBSD 14.3 (#106, freebsd-builder#9)
Fixed
- Fix file sync on Haiku (#104)
0.28.0 - 2025-05-19
Added
- Add support for FreeBSD 13.5 (#99)
- Add support for OpenBSD 7.7 (openbsd-builder#21)
- Add support for Haiku (#30)
0.27.0 - 2025-01-22
Added
- Add support for NetBSD 10.1 (#95)
0.26.0 - 2024-04-12
Added
- Add support for FreeBSD 13.4
- Add support for OpenBSD 7.6 (openbsd-builder#20)
- Add support for FreeBSD 14.2
0.25.0 - 2024-07-11
Added
- Add support for NetBSD 9.4
- Add support for FreeBSD 14.1
Deprecated
-
Support for macOS runners has been deprecated and will be removed in a future release. The reason for using macOS runners in the past has been because of the support for hardware accelerated nested virtualization using the Hypervisor framework. Since the creation of this action, the Ubuntu runners have been upgraded with better performance and added support for hardware accelerated nested virtualization using KVM. QEMU is also more stable when using KVM compared to the Hypervisor framework. Please use the
ubuntu-latestrunner instead. -
The Xhyve hypervisor has been deprecated and will be removed in a future release. QEMU will be the only available hypervisor. The reason being maintenance of the Xhyve hypervisor seemed to have stopped. It's also starting to become next to impossible to build on later versions of macOS. Please switch to the QEMU hypervisor by switching to the
ubuntu-latestrunner. -
The
hypervisorinput parameter has been deprecated will be removed in a future release. The reason being support for the Xhyve hypervisor has been deprecated, making this input parameter redundant. Please remove the use of thehypervisorinput parameter and switch to theubuntu-latestrunner.
0.24.0 - 2024-04-12
Added
- Add support for FreeBSD 13.3
- Add support for NetBSD 10.0
- Add support for NetBSD ARM64 (#55)
- Add support for OpenBSD 7.5 (openbsd-builder#16)
0.23.0 - 2024-02-18
Added
- Add support for FreeBSD 14.0 (#74)
- Add post run step that prints the VM output
- Support hardware accelerated virtualization on Linux runners (#47)
Fixed
- OpenBSD VM fails during "Initializing VM" with QEMU on macOS (#73)
- Use same options for rsync in both directions (#76)
Changed
- Update qemu to 8.2.0 for CVTPS2PD fix (#78)
0.22.0 - 2023-12-27
Added
-
Added support for using the action in multiple steps in the same job (#26). All the inputs need to be the same for all steps, except for the following inputs:
sync_files,shutdown_vmandrun. -
Added support for specifying that the VM should not shutdown after the action has run. This adds a new input parameter:
shutdown_vm. When set tofalse, this will hopefully mitigate very frequent freezing of VM during teardown (#61, #72).
Changed
-
Always terminate VM instead of shutting down. This is more efficient and this will hopefully mitigate very frequent freezing of VM during teardown (#61, #72).
-
Use
unsafeas the cache mode for QEMU disks. This should improve performance (#67).
0.21.1 - 2023-11-03
Fixed
- FreeBSD jobs occasionally fail when ejecting the disk (#64)
0.21.0 - 2023-10-26
Added
- Add support for OpenBSD 7.4 (openbsd-builder#15)
0.20.0 - 2023-10-24
Added
- Add support for disabling file syncing (#65).
This adds a new input parameter,
sync_files. It allows to specify which directions files should be synced. From the runner to the VM, from the VM to the runner, both or none.
0.19.1 - 2023-10-07
Fixed
- NetBSD - VM doesn't start (#62)
0.19.0 - 2023-08-17
Changed
- VMs running via QEMU only expose SSE and SSE2 CPU features (#60).
This changes the machine to
q35and the cpu tomax, for x86-64 using the QEMU hypervisor. This adds more CPU features like AVX and AVX2.
0.18.0 - 2023-08-04
Added
0.17.0 - 2023-07-25
Changed
- Bump QEMU to 8.0.3 (resources#3)
0.16.0 - 2023-07-21
Added
- Add support for FreeBSD ARM64 (#55)
0.15.0 - 2023-06-12
Changed
- Bump QEMU to 8.0.2 (resources#3)
0.14.0 - 2023-04-31
Added
- Add support for NetBSD 9.3 (#53)
0.13.0 - 2023-04-28
Added
- Add support for FreeBSD 13.2 (freebsd-builder#3)
0.12.0 - 2023-04-15
Added
- Add support for OpenBSD 7.3
0.11.0 - 2023-04-03
Added
- Add support for selecting hypervisor (#50)
- Add support for NetBSD on macOS runners (#28)
- Support for configuring memory (#16)
- Support for configuring CPU core count (#16)
Changed
- Use output groups to hide all output except the run command (No output is removed, just hidden by default) (#49)
- Remove support for IPv6 for NetBSD (#46)
- Increased default memory to 13GB on macOS runner and to 6GB on Linux runners (#16)
- Increased default CPU core count to 3 on macOS runner and to 2 on Linux runners (#16)
- Changed from two CPU sockets to one CPU socket (#16)
Fixed
0.10.0 - 2023-01-24
Added
- Bundle all X11 sets for NetBSD (netbsd-builder#3)
0.9.0 - 2023-01-16
Added
- Add support for FreeBSD 13.1
- Add support for FreeBSD 12.4
0.8.0 - 2023-01-13
Added
- Add support for OpenBSD 7.2 (openbsd-builder#13)
Changed
- Bump QEMU to 7.2
0.7.0 - 2022-12-25
Added
- Add support for OpenBSD ARM64
- Add support for running on macOS 12 hosts
Changed
- Run action using Node 16. This fixes a deprecation message
- Strip resource binaries to reduce space
Fixed
- Error in /home/runner/.ssh/config (#14)
0.6.2 - 2022-07-06
Fixed
- v0.6.1 only works if debug mode is enabled (#12)
0.6.1 - 2022-07-03
Changed
- Only print files synced in debug mode (#11)
0.6.0 - 2022-06-14
Added
- Add support for OpenBSD 7.1 (openbsd-builder#9)
0.5.0 - 2022-05-31
Added
- Add support for running OpenBSD on Linux (#9)
0.4.0 - 2022-05-10
Added
- Add support for running FreeBSD on Linux (#8)
0.3.1 - 2021-12-06
Fixed
- Missing QEMU dependency glib (#5)
0.3.0 - 2021-11-13
Added
- Added support for NetBSD (#1)
0.2.0 - 2021-09-04
Added
- Added support for FreeBSD 13.0
- Added support for OpenBSD 6.9
0.0.2 - 2021-06-22
Added
- Added branding to the GitHub action in the marketplace
0.0.1 - 2021-06-02
Added
- Initial release