I am pleased to announce the move of libc++ to pre-commit CI. Over the past few months, we have set up Buildkite jobs on top of the Phabricator integration built by Mikhail and Christian, and we now run almost all of the libc++ build bots whenever a Phabricator review is created. The bots also run when a commit is pushed to the master branch, similarly to the existing Buildbot setup. You can see the libc++ pipeline in action here: https://buildkite.com/llvm-project/libcxx-ci.
This is great – we’ve been waiting to set up pre-commit CI for a long time, and we’ve seen a giant productivity gain since it’s up. I think everyone who contributes to libc++ greatly benefits, seeing how reviews are now used to trigger CI and improve our confidence in changes.
This change does have an impact on existing build bots that are not owned by one of the libc++ maintainers. While I transferred the build bots that we owned (which Eric had set up) to Buildkite, the remaining build bots will have to be moved to Buildkite by their respective owners. These builds bots are (owners in CC):
The process of moving these bots over to Buildkite is really easy. Please take a look at the documentation at https://libcxx.llvm.org/docs/AddingNewCIJobs.html#addingnewcijobs and contact me if you need additional help.
To make sure we get the full benefits of pre-commit CI soon, I would like to put a cutoff date on supporting the old libc++ builders at http://lab.llvm.org:8011/builders. I would propose that after January 1st 2021 (approx. 1 month from now), the libc++ specific build bots at lab.llvm.org be removed in favor of the Buildkite ones. If you currently own a bot, please make sure to add an equivalent Buildkite bot by that cutoff date to make sure your configuration is still supported, or let me know if you need an extension.
Furthermore, with the ease of creating new CI jobs with this infrastructure, we will consider any libc++ configuration not covered by a pre-commit bot as not explicitly supported. It doesn’t mean that such configurations won’t work – it just means that we won’t be making bold claims about supporting configurations we’re unable to actually test. So if you care about a configuration, please open a discussion and let’s see how we can make sure it’s tested properly!
I am thrilled to be moving into the pre-commit CI era. The benefits we see so far are huge, and we’re loving it.
PS: This has nothing to do with a potential move or non-move to GitHub. The current pre-commit CI works with Phabricator, and would work with GitHub if we decided to switch. Let’s try to keep those discussions separate :-).
PPS: We’re still aiming to support non libc++ specific Buildbots. For example, if something in libc++ breaks a Clang bot, we’ll still be monitoring that. I’m just trying to move the libc+±specific configurations to pre-commit.