I use GitLab CI runner and VirtualBox for ArchMac. Upon CI job submission, on the first run a linked clone of a base VM is started and a snapshot is made, then the job executes inside of it. On subsequent runs the runner starts from the VM snapshot. Concurrency is supported by doing multiple clones.
A blog post is pending bu here's the doc:
[0]: https://docs.gitlab.com/runner/install/osx.html
[1]: https://docs.gitlab.com/runner/executors/virtualbox.html