Rewriting bors: how hard can it be?

by Jakub Beránek

Three years ago, we set out to rewrite bors, the merge queue bot used to merge all pull requests in the rust-lang/rust repository. A merge queue bot just parses some pull request commands, then pushes commits to a repo, waits until CI is green and merges the result into a target branch. Sounds simple, right? How hard can that be? Well, let’s find out together in this talk! I’ll show what infrastructure changes we had to make to enable using new bors, how its integration test suite works and how we designed it to robustly handle various nasty race conditions so that it is able to battle with GitHub’s quirks.

Picture of Jakub Beránek

Jakub Beránek

he/him
open-source contributor at the Rust Project
Links: icon of github

Jakub is a member of the Rust Infrastructure and Compiler teams. He likes to work on various pieces of infrastructure that support both Rust users, but also other Rust Project contributors, such as our suite of bots. Apart from that, he teaches Rust at a university and organizes and talks at Rust meetups in the Czech Republic.