How PlanetScale scrapped Buildkite and runs CI in half the time with Depot | Depot

How PlanetScale scrapped Buildkite and runs CI in half the time with Depot

dev-tooling builds (down from 10–12 min)

dev-tooling builds (down from 10–12 min)

faster Terraform jobs

faster Terraform jobs

faster CI runs vs. self-hosted runners

faster CI runs vs. self-hosted runners

PlanetScale provides high-performance, scalable databases in the cloud, offering hosting for both Postgres and Vitess. Building and operating a platform at that scale means that around 90% of the company is writing software every day. Software delivery at PlanetScale means dozens of jobs per commit and a heavy end-to-end test load. PlanetScale was running CI on infrastructure they had to manage themselves.

When they went looking for a solution, they had specific reasons for choosing Depot: performance and scale, and a vendor that meets them where they are today, while still actively building CI for the future.

We spoke with Nick Van Wiggeren, CTO, and Joe Miller, Infrastructure Engineer, about the move.

The challenge

"This came to a head when Buildkite was having database problems and asked us to accept a multi-hour downtime window for their service, where we just couldn't do any CI. We're a global company. We have people all over the world who rely on our CI and CD. When they refused to take a meeting with us to talk about it…it just felt very non-collaborative."

Nick Van Wiggeren, CTO

For about five years, PlanetScale ran CI on a mix of self-hosted Buildkite and GitHub Actions runners. The team had moved from standard GitHub Actions runners to self-hosted for cost and performance, but managing the underlying AWS resources became a constant drain on the infrastructure team. They spent their time debugging why SSM was stopping apt-get from working, tuning the ratio of on-demand to spot instances so long-running jobs wouldn't get killed, and standing up separate queues as workarounds when one team's CI load starved everyone else.

Buildkite itself added friction. Simple workflows turned into hundreds of lines of YAML and do-it-yourself plugins, runs were slow, and there was no unified cache API, so engineers spent hours on caching that sometimes never worked. The breaking point came when Buildkite asked PlanetScale to absorb a multi-hour CI outage and declined to discuss it. With engineers around the world relying on CI and CD, that wasn't something the team could accept.

The solution

"We always want to give our developers the best tools. That's just our philosophy. I have no interest in giving them anything but the best, I have no interest in wasting their time using subpar tools. Depot hit that sweet spot of being a drop-in replacement for our manual toil, while also giving us an option to evolve in the future."

Nick Van Wiggeren, CTO

PlanetScale first heard about Depot years ago when fast Docker builds were the main product. And since Depot's core application database runs on PlanetScale, the two teams already had a shared Slack channel. When PlanetScale was evaluating alternatives to Buildkite and self-hosted runners, three criteria drove the decision toward Depot:

The migration started with the workloads that hurt most.

The Vitess test suite's job matrix is large by design: Vitess releases a new version every six months and supports the previous two, so changes that need backporting have to pass tests across each supported version. In practice, a single pull request kicked off 200–400 jobs and consumed roughly 80% of all CI minutes at PlanetScale. On self-hosted runners that volume caused head-of-line blocking: builds stacked up for 20–30 minutes, and a single failure could cost half a day. They had a dedicated runner queue just to contain it.

Nick moved the test suite to Depot. "I just moved everything over to Depot, and that problem completely went away," he said. "We decommissioned the runner queue, and it really just worked, and it made our builds faster and less flaky."

Joe began converting other projects, and the Surfaces team adopted Depot's container builders for their Rails image. Key benefits included:

Joe also pointed to Depot's engineering work as something his team benefits from without having to build it. "You guys have built what we couldn't build without spending a ton of time away from our core business," he said.

Nick summed up the overall change: "It's refreshing to have a provider like this that just works. Everywhere I've worked there have been squabbles or disagreements or annoyances about CI."

The measurable impact

"I'm already seeing run times cut in half or even better on some of our CI jobs, just by moving to runners. And I'm excited about what we can do with Depot to speed things up even more."

Joe Miller, Infrastructure Engineer

PlanetScale saw improvements in both build speed and the day-to-day experience of running CI:

The qualitative change is as important as the numbers. The Vitess test suite is a good example. After moving to Depot, Nick says "I have not thought about it since, nor has the team, and we were thinking about it every day for a while."

Joe saw similar success with the Surfaces team's Rails image, which he and the team's tech lead had worked on speeding up, off and on, for years. "They've been using Depot for three months now, and they just love it. It's been so much faster for them."

Looking ahead

PlanetScale is expanding its use of Depot CI and Depot's container builds across more workloads, and is especially interested in feeding Depot's run metrics and logs to agents that can identify slow tests, suggest parallelization, and open optimization pull requests automatically.

As AI-driven coding spreads beyond the engineering org, the team is also looking toward finer-grained access controls to let those workflows use Depot while staying separated from security-sensitive repositories.

PlanetScale scrapped Buildkite and runs CI in half the time.