rewrite • ~1.5m lines of app code • ~600k lines of test code • Another ~1m lines of generated code • Split across ~2500 different modules People • ~140 committers per month • ~230 commits per week • ~2 tooling engineers
Mac Minis, many AWS Linux containers • Macs are Bare Metal, managed with ARD • Piloting AWS Mac Minis Software • Buildkite, generated pipelines for many parallel jobs • Xcode upgrades performed quickly, single version supported • Linux CI managed with k8s, runs linters, some Swift • macOS upgrades performed as needed for Xcode
(~2x slower last year) • P95: 30 min (~2x slower last year) • Slowdown mostly due to more tests Local (Build) • Average* build**: ~40s (~1.5 faster than last year) • Still trying to push dev apps • All devs on M1 Max machines now
improvements • Crossplatform Rust: Low level shared libraries, replacement for C++ (🙊) in some cases • Natively supporting arm64 simulator: Surprising number of issues, Snapshot tests, OpenGL map SDKs, Bazel caching • Automated provisioning profile management: Using the App Store Connect API directly • Dead Code detection blocking PRs • Swift incremental support: Still too slow, >3x clean build times, faster in specific cases • M1s Recent Updates
apps • CI machines reaching EOL: Replacing with AWS • More longer running UI tests: Aggressive sharding • Increasing amount of cross platform code: Improve crossplatorm devx • Nearing the end of clear wins: ???
hosting hardware • Swift LTO: Some existing bugs, potential nice app size win • Improved IDE experience: Moving to rules_xcodeproj • Unifying more devx between iOS and Android • Remote exec? Still backburner Future plans