RFC: Prototyping Pre-commit Testing Using Buildbot

Chris Bieneman is @beanz.

Merge queues would definitely help if we want to move significantly more towards pre-commit CI in terms of compute requirements. It doesn’t alleviate the issue of having one failing commit bundled up with multiple commits causing them all to fail, but that’s definitely not a regression over what we have today.

I don’t think the current suggestion is to migrate away from Buildbot completely. If I’m understanding things correctly, I believe Chris was specifically suggesting moving to Github actions for mandatory pre-commit CI due to scaling requirements (which is somewhat of a separate discussion in my opinion). I don’t think a future without Buildbot is feasible anytime soon. There are too many configurations that can’t be tested with Github actions currently due to a lack of support from Github (i.e., anything other than ARM/x86).

I think currently the path of least resistance is a hybrid approach. There are already some small post-commit github actions that run. Having native Github actions in addition to the custom scripting that you’ve demoed integrating Github with buildbot seems like something that should work. It allows for all of the benefits that you’ve mentioned while still allowing for easy scaling through Github actions if at some point everyone does decide to implement mandatory pre-commit on a couple essential platforms.

I think a future of moving completely to Github actions is not particularly feasible at this point due to what platforms Github supports, but with self-hosted runners and appropriate scripting, we could also have opt-in pre commit CI that people self host.

I think there are a couple concrete steps that we can take now if others are interested and no one has any major objections:

  1. Open up pull requests on the main Github repo for testing purposes (essentially what was discussed here Opening up PRs experimentally for a subset of the LLVM project). It seems like libc++ already has PRs technically opened up (workflows/repo-lockdown: Ignore libcxx and related sub-directories · llvm/llvm-project@63bd772 · GitHub), it’s just the CI piece that’s missing.
  2. Get your prototype CI integration more production ready and get it working on test pull requests.
1 Like