CI/CD for Mobile Apps (iOS & Android)
Mobile CI is expensive: iOS needs macOS runners at ~10x Linux cost, and Android Gradle builds are heavy.
Mobile pipelines hit the priciest runners and the slowest builds. Cost control is the dominant concern.
The macOS cost problem
iOS builds require macOS runners, billed at roughly 10x Linux minutes. Minimize macOS jobs and cache aggressively.
Android Gradle builds
Cache the Gradle caches and wrapper; Gradle daemon OOM and slow builds are common - right-size memory.
Keep Linux work on Linux
Run everything that does not need macOS (lint, unit tests, Android) on cheap Linux runners.
Reliability
Mobile toolchains are flaky (simulators, signing). Self-healing retries transient failures so you re-run fewer expensive macOS jobs.
Key takeaways
- macOS minutes dominate iOS cost - minimize them.
- Cache Gradle; right-size memory.
- Self-heal flaky mobile toolchain failures.
Related guides
Gradle "Out of memory" / "GC overhead limit exceeded" in CIFix Gradle running out of memory in CI -- the daemon or a worker hits "java.lang.OutOfMemoryError: Java heap…
GitHub Actions Pricing Explained: Minutes, Runners & Real CostHow GitHub Actions pricing actually works - included minutes, per-minute rates, multipliers for Windows and m…
GitHub Actions Cost Calculator - Estimate & Cut Your CI BillFree GitHub Actions cost calculator: enter your monthly CI minutes and runner size to see your current bill a…