In the beginning of 2023 we set out to move from our current CI solution to GitHub Actions. There were three aspects that motivated us to revise our setup.
During our initial testing of GitHub Actions we found that jobs building an iOS app run 20-25% slower on GitHub’s macOS runners compared to the CI provider we were moving from. This made GitHub’s runners a total no-go as we don’t accept an increase in build times 🙅♂️
We began investigating GitHub’s self-hosted runners that allow developers to use any machine to act as a runner and ultimately have builds run faster and in environments that the developers are in control of. We had the following requirements for our self-hosted runners.
As we researched our options, we were surprised to discover that the market for self-hosted GitHub Actions runners is not as mature as we had assumed. There were few to none off-the-shelf solutions that fulfilled all of our needs. So being developers, we started building it ourselves. As Bob the Builder says, “Can we fix it? Yes, we can!” 💪
Screen sharing to a physical machine rented from MacStadium. The machine maintains two virtual machines, each operating a GitHub Actions runner, using Tartelet.
Today we are open-sourcing Tartelet, our take on managing self-hosted GitHub Actions runners. Tartelet has a few benefits that make it stand out from alternatives.
While we’re still evaluating the solution, we are running Tartelet on two physical machines, allowing us to have four virtual machines running in parallel. The machines are two Mac mini M1 from 2020 with 16 GB of memory rented from MacStadium and Hetzner.
We are seeing that our iOS apps build 3 - 4 times faster on our self-hosted runners compared to GitHub’s macOS runners and we have reduced our monthly cost by more than 20%. All of this while also improving the developers’ experience. Not only are we as developers happy that builds are lightning fast but since we’re consolidating services on GitHub, we also have one less service to use.
If this has piqued your interest and you want to learn more about Tartelet, then we recommend starting with the README in the Git repository and then heading over to the wiki on GitHub.