I've created a GitHub Action for running commands on multiple platforms. This includes platforms that GitHub Actions don't natively support. It currently supports FreeBSD, OpenBSD and NetBSD. OpenBSD can run on x86-64 and ARM64, the other operating systems run on x86-64.<p>Some of the features that are supported include:<p>* Multiple operating system with one single action<p>* Multiple versions of each operating system<p>* Allows to use default shell or Bash shell<p>* Low boot overhead<p>* Fast execution<p>* Runs on both macOS and Linux runners<p>Compared to similar solutions like <a href="https://github.com/vmactions/freebsd-vm">https://github.com/vmactions/freebsd-vm</a>, the boot time is around a fifth and the full execution time for the same job is around half of freebsd-vm (last time I tried).<p>The readme contains more information about how it all works under the hood.
I previously tried to use Docker `docker/setup-qemu-action@v2` and `docker/setup-buildx-action@v2` for this purpose (see that example <a href="https://github.com/docker/build-push-action#git-context">https://github.com/docker/build-push-action#git-context</a>). Thanks to buildkit, platform switching works transparently. However, building on ARM via QEMU on GitHub Actions is terribly slow (something like 5 times more), which is hard to accept. Therefore, full of hope, I am waiting for GitHub Actions to make cloud runners available on ARM, because it is a blocker for the implementation of Graviton on the AWS environment for us.<p>For a while, the blocker in GitHub Actions for providing ARM support was that Azure doesn't have ARM support. In this way, the Azure cloud offering may determine the habits of AWS consumers.