Monorepo delivery
Speed and stability at any scale
Your CI shouldn’t hold you back. World-class teams standardize on Buildkite to turn monorepo challenges into advantages.
The world’s most demanding and sophisticated software companies have standardized on Buildkite
Unlimited concurrency for unlimited speed
Your monorepo needs room to grow. Scale builds across unlimited agents, running on infrastructure you control with the compute power you choose.
- Scale instantly to meet any workload with unlimited concurrency—spin up 100,000+ agents whenever your monorepo needs them
- Remove common slowdowns with intelligent caching and Git mirroring built for speed
- Eliminate operational toil—our highly-available control plane handles massive scale automatically
“ Migrating from Jenkins to Buildkite allowed us to scale to 40,000,000 minutes of CI builds each month.”
- Yohan Hartanto
- Staff Engineer, Uber
Fast, reliable tests for a fast, stable merge queue
Keep your merge queue flowing at any scale. Buildkite Test Engine’s smart test distribution and automated flake detection work together to eliminate bottlenecks and keep your teams shipping.
- Flatten queue wait times by splitting and distributing tests automatically based on historical performance
- Keep your queue unblocked by detecting and quarantining flaky tests before they can cause disruptions
- Quickly diagnose and resolve queue issues with deep insights into test performance and regression patterns over time
“ To use a merge queue effectively, you need really clean tests because every flake you have is going to make merging more painful for engineers. With Buildkite, we reduced our flake rate from 30% to 7%, which has been crucial for keeping our main branch shippable.”
- Ian Chesal
- Head of Infrastructure, Persona
Software-defined pipelines for dynamic delivery
import * as buildkite from "buildkite-pipeline-sdk";
export const buildPipeline = () => {
const pipeline = new buildkite.StepBuilder();
pipeline.addCommandStep({
commands: [`npm test`],
});
pipeline.addCommandStep({
commands: [`npm run build`],
});
pipeline.write();
};
Large monorepos with multiple interconnected projects demand more than pre-defined, static pipelines. Buildkite’s dynamic pipelines and integration capabilities turn complex dependencies into streamlined workflows.
- Generate pipelines dynamically at runtime to intelligently respond to changes and skip unnecessary builds
- Write pipeline logic in any language (JavaScript, Go, Python, Ruby, and more) instead of wrestling with YAML and Bash
- Build sophisticated error handling, auto-scaling, and refactoring capabilities into your pipeline code for maintainable workflows that scale
- Integrate seamlessly with specialized tools like Bazel to understand project dependencies; build and test only what’s impacted
Smart visualizations for mastering monorepo complexity
- //src/test/shell/bazel:bazel_bootstrap_distfile_test on macOS (shard 4): PASSED in 1386.1s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on Ubuntu 20.04 LTS PASSED in 1170.2s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on Ubuntu 20.04 LTS PASSED in 1066.5s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on CentOS 7 PASSED in 990.0s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on Ubuntu 22.04 LTS PASSED in 963.3s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on CentOS 7 PASSED in 963.3s (log)
- //src/test/shell/integration:bazel_json_worker_test on Ubuntu 20.04 LTS PASSED in 938.4s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on Ubuntu 22.04 LTS PASSED in 868.4s (log)
- //src/test/shell/bazel:bazel_bootstrap_distfile_test on Windows PASSED in 833.0s (log)
- //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on macOS arm64 (shard 4) PASSED in 740.5s (log)
Give your team one source of truth with a UI developers love. Track your monorepo’s connected agents, builds, test history, queue depth (and more) in real time. Follow changes from commit to completion with powerful visualizations.
- Navigate complex monorepo builds with clearly grouped logs—no more digging through interleaved output
- Track hundreds of pipeline jobs in a unified view, each individually debuggable
- Surface key insights with custom annotations—from test summaries and codebase analyses to artifact links
Spend less and work faster compared to legacy tools
Unlock bandwidth and compute savings with dynamic pipelines and Buildkite’s run-anywhere agent, all while reducing operational burden.
Elastic
Elastic significantly reduced costs and iteration cycles using Buildkite’s dynamic pipelines and unlimited concurrency
Rippling
Rippling reduced infra cost by 50% and improved developer experience by moving to spot instances and Buildkite
Persona
Persona migrated source code control and CI/CD systems to achieve faster builds at 60% lower cost with Buildkite
Key features
Dynamic pipelines let you customize pipeline steps on the fly to reduce run times and react to changing scenarios—from adding new steps to triggering different pipelines. All with logic you write in your programming language of choice.
Real-time flaky test detection & quarantine can automatically categorize and isolate problematic tests before they disrupt your merge queue. Map tests to teams and automatically assign ownership, so it’s clear who needs to know about and fix any given flake.
Monorepo builds selectively build parts of your codebase depending on what changed. Use our official plugin, or use dynamic pipelines to implement your own build and test selection strategy.
Built by developers, for developers
- SOC 2 Type II compliant.
- Audit logs.
- Multi-level permissions to control access.
- REST and GraphQL APIs.
- SSO, SAML, and 2FA.
Customers
Teams work better with Buildkite
40 minutes
Monorepos at scale: Building CI for 1,000 daily commits at Uber
Learn the strategies Uber uses to keep their builds fast and the challenges they’ve faced along the way.
Mike Morgan
Frequently asked questions
Got a question that’s not on our list? Want a demo? Just want to chat? Get in touch.
No, you set your own limits with self-hosted agents. Buildkite handles upwards of 100,000 concurrent agents from some customers.
Buildkite provides an SLA of 99.95% uptime and a status page to track any incidents.
Migration times depend on the number and complexity of your pipelines. We recommend derisking migrations by breaking them into milestones and choosing a key pipeline to start with. Many teams start with the most critical or expensive pipeline or a new project. They then establish paved roads to help other teams move to Buildkite.
Buildkite also offers professional services to support your migrations. Contact support to learn more.
Yes! All new organizations get a 30-day free trial of the Pro plan to try the key features. See Pricing for all the details on the plans.
No, Buildkite cannot be fully self-hosted. While you can run the build infrastructure on self-hosted agents, the control plane is a SaaS offering managed by Buildkite.
This setup eliminates the overhead of maintaining and scaling the control plane, allowing your team to focus on delivering quality code quickly and efficiently. Self-hosted agents provide many benefits of an on-premises deployment with security, compliance, and governance controls.
Yes, Buildkite supports lightweight plugins to integrate with popular tools, but with significant improvements over Jenkins. Unlike Jenkins plugins, Buildkite only executes plugins on agents, ensuring the control plane remains stable and secure.
This approach prevents crashes and reduces downtime. Teams can also use multiple versions of a plugin without impacting each other.
Resources
Guides to improve your practices
Start turning complexity into an advantage
Create an account to get started with a 30-day free trial. No credit card required.