How Uber halved monorepo build times with Buildkite
Uber faced challenges in reducing monorepo build times and providing flexible, scalable Continuous Integration (CI) for thousands of developers. They launched a Go monorepo using the open-source build system Make in combination with Go's go build. Later, they upgraded to Google's Bazel, which allowed them to optimize their CI workflows by understanding how each target is built and how they relate to each other. By 2022, Uber's Go monorepo was the largest code repository at Uber with over 50 million lines of code, 500,000 files, and 3,000 engineers working on it. To support safe and fast changes, they built a system called SubmitQueue to keep the main branch green while landing thousands of commits per day. They also replaced Jenkins with Buildkite for dynamic CI, which allowed them to define their builds dynamically using scripts from their source code. This led to significant improvements in developer happiness and productivity, as well as better visibility into build events and metrics.
Company
Buildkite
Date published
June 28, 2024
Author(s)
Michael Belton
Word count
2876
Language
English
Hacker News points
1