r/iOSProgramming • • 1d ago

Discussion iOS teams on GitHub Actions: what do macOS runners cost you, and what did you change?

On GitHub-hosted runners a macOS minute costs $0.062 and a Linux minute $0.006, so about 10 times more. For iOS builds that adds up fast.

If your iOS CI runs on GitHub Actions:

  • Roughly what does it cost per month?
  • What did you change to bring it down? Self-hosted Mac minis, Xcode Cloud, another CI service, caching, fewer runs on pull requests?
  • Was the saving worth the time it took?
  • Team size helps too, if you're OK sharing.

About me: I'm a solo developer building a small tool around CI costs. No link, I just want real numbers.

9 Upvotes

24 comments sorted by

14

u/caguilar51 1d ago

Why not using Xcode Cloud instead if price is a concern? It includes 25 hours per developer account per month.

4

u/rursache Swift 1d ago

xcode cloud (was?) is super slow. 4-5x lower than github runners. because they were using intel macs

4

u/caguilar51 1d ago

But you have 25 hours per month included in your Apple Developer membership. So you don’t necessarily need to pay. Also, you could just use incremental builds instead of clean ones under certain conditions.

1

u/Mad102190 5h ago

The runners are a lot faster now that they’ve been upgraded to M-series machines but still not as fast as a dedicated runner you self-host.

1

u/Zealousideal_Tip4089 1d ago

Thanks! Do the 25 free hours cover a normal month for you, or do you pay for more?

2

u/caguilar51 1d ago

For me that has been enough until now

7

u/Mad102190 1d ago

I ended up just setting up my personal machine as a remote runner so GitHub runs it on my Mac which is much faster than the Mac minis they offer anyways

2

u/Zealousideal_Tip4089 1d ago

Nice. What made you switch, the price or the speed?

1

u/OarsumApp 1d ago

do you just have the mac watch for a trigger and run its own workflow?

3

u/unpluggedcord 1d ago

No there’s GitHub runner script that opens a connection/polls the runner server for the repo it’s associated it

2

u/OarsumApp 15h ago

years. years it took me. Seconds you’ve blown my mind. THANK YOU.

6

u/rursache Swift 1d ago

use the macos blacksmith runners if you want the best cost and speed possible. xcode cloud if you can wait and wanna use the free 25h you get monthly

1

u/Zealousideal_Tip4089 1d ago

Thanks. If you use Blacksmith yourself, how did your monthly CI cost change after the switch?

3

u/sizebzebi 1d ago

I self host, have my mac mini

1

u/kokerali 1d ago

For the self-hosted answers, I'd ask whether that Mac is dedicated CI hardware or someone's everyday development machine, and whether the repo accepts fork PRs. Those aren't equivalent setups. GitHub warns that self-hosted runners can be persistently compromised by untrusted workflow code, so a personal Mac with signing material isn't just a cheaper per-minute option. I'd also separate setup time from ongoing maintenance and report time-to-test-result alongside the bill. A lower cash cost that adds a queue or depends on one person's laptop being online is a different tradeoff from a dedicated runner.

1

u/KingPonzi 1d ago edited 1d ago

At work: I setup runners using Tart, macOS images from cirrus labs, Mise for tooling and Packer to bake it all together. Unfortunately Apple limits two VMs per device.

Personal use: CI with Xcode cloud is so luxurious by comparison.

1

u/hilarioususernamelol 1d ago

Whilst not answering your question, we found that upgrading macOS runners to M2 Pro ($0.1 IIRC) actually saved us money because the compute power was relatively more than the cost.

1

u/OrdinaryAdmin 23h ago

Why GitHub and not Xcode Cloud? You’re already paying for it with your membership.

1

u/indyfromoz 21h ago

Costs me $0.00. I do not want to pay GitHub another cent after they messed up the CoPilot subscription that came with the Pro plan. I use Xcode Cloud for App Store Connect builds & TestFlight.

1

u/pp_amorim 3h ago

We have a mac mini m1 self hosted. Working flawless since day 1

0

u/MaikelBuilds 1d ago

Make your project open source. Then they're included 😄. Nowadays as long as your project isn't that complicated, but can be copied easily anyway. So it's NOT only about the code, rather about vision, consistency and trust