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

Agents
0
Connected
:rspec: Spec
0/64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

Your monorepo needs room to grow. Scale builds across unlimited agents, running on infrastructure you control with the compute power you choose.

  1. Scale instantly to meet any workload with unlimited concurrency—spin up 100,000+ agents whenever your monorepo needs them
  2. Remove common slowdowns with intelligent caching and Git mirroring built for speed
  3. 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
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.

  1. Flatten queue wait times by splitting and distributing tests automatically based on historical performance
  2. Keep your queue unblocked by detecting and quarantining flaky tests before they can cause disruptions
  3. 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
Ian Chesal
Head of Infrastructure, Persona

Software-defined pipelines for dynamic delivery

:typescript: pipeline.ts

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.

  1. Generate pipelines dynamically at runtime to intelligently respond to changes and skip unnecessary builds
  2. Write pipeline logic in any language (JavaScript, Go, Python, Ruby, and more) instead of wrestling with YAML and Bash
  3. Build sophisticated error handling, auto-scaling, and refactoring capabilities into your pipeline code for maintainable workflows that scale
  4. Integrate seamlessly with specialized tools like Bazel to understand project dependencies; build and test only what’s impacted

Smart visualizations for mastering monorepo complexity

Slowest 10 targets
  1. //src/test/shell/bazel:bazel_bootstrap_distfile_test on :mac: macOS (shard 4): PASSED in 1386.1s (log)
  2. //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on :ubuntu: Ubuntu 20.04 LTS PASSED in 1170.2s (log)
  3. //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on :ubuntu: Ubuntu 20.04 LTS PASSED in 1066.5s (log)
  4. //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on :centos: CentOS 7 PASSED in 990.0s (log)
  5. //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on :ubuntu: Ubuntu 22.04 LTS PASSED in 963.3s (log)
  6. //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on :centos: CentOS 7 PASSED in 963.3s (log)
  7. //src/test/shell/integration:bazel_json_worker_test on :ubuntu: Ubuntu 20.04 LTS PASSED in 938.4s (log)
  8. //src/test/shell/bazel:bazel_proto_library_test (shard 1/2) on :ubuntu: Ubuntu 22.04 LTS PASSED in 868.4s (log)
  9. //src/test/shell/bazel:bazel_bootstrap_distfile_test on :windows: Windows PASSED in 833.0s (log)
  10. //src/test/shell/bazel:bazel_proto_library_test (shard 2/2) on :mac: macOS arm64 (shard 4) PASSED in 740.5s (log)
:pipeline:
:centos: CentOS 7
5
Running global environment hook
7
Setting up environment variables
21
Setting up elastic stack environment
84
Running global pre-checkout hook
89
Preparing working directory
140
Running local post-checkout hook
147
Running global pre-command hook
152
Running commands
:fedora: Fedora 39 (OpenJDK 17, gcc 13.1.1)

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.

  1. Navigate complex monorepo builds with clearly grouped logs—no more digging through interleaved output
  2. Track hundreds of pipeline jobs in a unified view, each individually debuggable
  3. Surface key insights with custom annotations—from test summaries and codebase analyses to artifact links

Spend less and work faster compared to legacy tools

Elastic

Rippling

Persona

Key features

Dynamic pipelines

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

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

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

  1. SOC 2 Type II compliant.
  2. Audit logs.
  3. Multi-level permissions to control access.
  4. REST and GraphQL APIs.
  5. SSO, SAML, and 2FA.

Customers

Teams work better with Buildkite


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.

Buildkite Pipelines

Platform

  1. Pipelines
  2. Pipeline templates
  3. Public pipelines
  4. Test Engine
  5. Package Registries
  6. Mobile Delivery Cloud
  7. Pricing

Hosting options

  1. Self-hosted agents
  2. Mac hosted agents
  3. Linux hosted agents

Resources

  1. Docs
  2. Blog
  3. Changelog
  4. Webinars
  5. Plugins
  6. Case studies
  7. Events

Company

  1. About
  2. Careers
  3. Press
  4. Brand assets
  5. Contact

Solutions

  1. Replace Jenkins
  2. Workflows for AI/ML
  3. Testing at scale
  4. Monorepo delivery

Support

  1. System status
  2. Forum