A repository of bitesize articles, tips & tricks
(in both English and French) curated by Mirego’s team.

How we built our own GitHub Actions self-hosted macOS ephemeral runner setup

We are heavy GitHub Actions users at Mirego. We run hundreds of workflows per day, across Ubuntu and macOS runners.

We quickly hit a showstopper for macOS runners: it’s impossible to increase the number of concurrent GitHub-hosted macOS jobs for a single organization without upgrading the whole organization plan 😞.

So we started to look into hosting our own runners, specifically for macOS.

One thing we wanted to focus on was to make the setup as reliable and maintainable as possible. In order to increase builds repeatability, each runner would have to run inside an ephemeral virtual machine (using Apple’s Virtualization framework). This way, whenever it picks up a job, the workspace is guaranteed to be in a clean state. Since this is also how the GitHub-hosted runners work, this can simplify interoperability.

So we (@randy-sab-roy and I) put together a few tools and came up with Ekiden.

It uses tools such as: