Building a Dynamic Mobile CI System
Article Summary
Shopify slashed their mobile CI deploy times from 2.5 hours to 15 minutes. Here's how they built a system that scales horizontally without breaking a sweat.
As Shopify shifted to mobile-first with 130K+ merchants on mobile, their Mac Mini-based CI system hit a wall. Their production engineering team rebuilt it from scratch using VMware, MacStadium's Private Cloud, and Buildkite to handle massive scale.
Key Takeaways
- Each build runs in isolated, disposable VMs created via linked clones in under 40 seconds
- Shared SAN storage reduced deploy complexity from O(N) to O(1) across hosts
- Layered Packer builds cut macOS VM rebuild times from 60+ minutes to minutes
- 48 concurrent jobs across 8 Mac Pros with horizontal scalability built in
- Automated iOS code signing with fastlane match and custom spaceship scripts
The new system delivers sub-10-minute builds with perfect isolation, horizontal scalability, and 8x faster deploys than their previous setup.
About This Article
Shopify's CI setup had a major bottleneck. They needed to upload VM images to each of their 24 Mac Minis separately, which meant deployments took over two hours. This slow process made it hard to iterate quickly on build environments.
They switched to MacStadium's Private Cloud, which uses shared SAN storage and VMware vCenter. Now they can upload a VM image once and deploy it to all hosts through high-bandwidth fibre channel connections.
The results were significant. Ubuntu deployments went from 40 minutes down to 5 minutes. macOS deployments dropped from 120 minutes to 15 minutes. In the worst case, total deployment time fell from 150 minutes to 20 minutes.