BlogsShopifyiOS CI/CD Infrastructure

iOS CI/CD Infrastructure

iOS CI/CD Infrastructure

1
posts
2018

This feature thread tracks the development and enhancement of Shopify's Continuous Integration and Continuous Delivery (CI/CD) infrastructure for iOS applications. Initial efforts focused on building a unified build system, Shopify Build, based on Buildkite for Linux and Android projects. This post details the significant challenges and solutions for extending this unified system to iOS, which requires macOS environments. Key developments include the transition from a VMware ESXi-based system with a Storage Area Network (SAN) to a more scalable and maintainable infrastructure using Anka virtualization on Mac Minis with local storage. This evolution addresses issues of maintenance burden, single points of failure, and performance degradation, ultimately improving build stability, speed, and developer experience for iOS developers by providing disposable, on-demand build environments.

2018

Scaling iOS CI with Anka - Shopify

7/11/2018

This post details the challenges and solutions for integrating iOS into Shopify's unified CI/CD system, Shopify Build. It describes the migration from a VMware ESXi-based infrastructure with a SAN to a new system utilizing Anka virtualization on Mac Minis with local storage. Key technical contributions include: identifying the limitations of cloud providers for macOS, the maintenance burden of the previous VMware setup, the introduction of Anka for lightweight macOS VMs with Docker-like features (container registry, fast boot times, CLI provisioning), the cost-effectiveness and performance benefits of Mac Minis over Mac Pros for Anka, the multi-layered image management for efficient distribution and updates, and the integration of Anka VMs with Buildkite agents for running build jobs. It also discusses the lifecycle of a build job using Anka commands (clone, run, delete) and the strategies for managing build node demand with MacStadium.