Company
Date Published
Author
Mel Kaulfuss
Word count
1229
Language
English
Hacker News points
None

Summary

Keith Smiley, a Principal Engineer at Lyft, shared insights into the company's continuous integration (CI) evolution at UnblockConf '21, highlighting their transition to Buildkite and the integration of Bazel for iOS support. The journey began with challenges such as slow build times on macOS due to Apple's Xcode changes and the inefficiencies of compiling Swift. To tackle these, Lyft developed a flexible CI system that abstracts configurations, selects jobs via a fast Linux intermediary, and triggers jobs through APIs, allowing for diverse CI provider testing. The team moved towards self-hosting macOS machines to alleviate hosted service limitations, significantly reducing CI times from 20 to 5 minutes with Buildkite. Buildkite's dynamic pipelines, coupled with Lyft's custom scripts like generate_pipeline.py, optimize CI processes by querying GitHub and Bazel to determine necessary build tasks, thus improving CI machine utilization and developer experience. This setup allows Lyft to efficiently handle thousands of CI builds weekly, ensuring better resource allocation and reducing potential build bottlenecks.