|
|
|
|
|
by ricardobeat
2621 days ago
|
|
No, they haven't. This is a system to queue commits, not a simple CI setup. This problem only comes up when you start having contention due to commit volume in a monorepo (think thousands commits/day). This is only the 3rd one I've heard about. > This paper introduces a change management system called
SubmitQueue that is responsible for continuous integration
of changes into the mainline at scale while always keeping the mainline green. Based on all possible outcomes of
pending changes, SubmitQueue constructs, and continuously
updates a speculation graph that uses a probabilistic model,
powered by logistic regression. The speculation graph allows
SubmitQueue to select builds that are most likely to succeed,
and speculatively execute them in parallel. Our system also
uses a scalable conflict analyzer that constructs a conflict
graph among pending changes. The conflict graph is then
used to (1) trim the speculation space to further improve the
likelihood of using remaining speculations, and (2) determine independent changes that can commit in parallel |
|
Two code-conflict-free changes may pass a pre-merge build+test cycle independently but may logically break one another if both changes are merged into master. Using a submit/merge queue guarantees that each change has passed tests with the exact ordering of commits it would be merged onto. The example described here is a better explanation: https://github.com/bors-ng/bors-ng#but-dont-githubs-protecte...