This repo is holding VM configurations for machine cluster and scripts to run pre-merge tests triggered by http://reviews.llvm.org.
As LLVM project has moved to Pull Requests and Phabricator will no longer trigger builds, this repository will likely be gone.
Pull request migration schedule.
Presentation by Louis Dione on LLVM devmtg 2021 https://youtu.be/B7gB6van7Bw
The pre-merge checks for the LLVM project are a continuous integration (CI) workflow. The workflow checks the patches the developers upload to the LLVM Phabricator instance.
Phabricator (https://reviews.llvm.org) is the code review tool in the LLVM project.
The workflow checks the patches before a user merges them to the main branch - thus the term pre-merge testing*. When a user uploads a patch to the LLVM Phabricator, Phabricator triggers the checks and then displays the results.
The CI system checks the patches before a user merges them to the main branch. This way bugs in a patch are contained during the code review stage and do not pollute the main branch. The more bugs the CI system can catch during the code review phase, the more stable and bug-free the main branch will become. citation needed
This repository contains the configurations and script to run pre-merge checks for the LLVM project.
If you notice issues or have an idea on how to improve pre-merge checks, please create a new issue or give a ❤️ to an existing one.
To get the latest features and help us developing the project, sign up for the pre-merge beta testing by adding yourself to the "pre-merge beta testing" project on Phabricator.
In case you want to opt-out entirely of pre-merge testing, add yourself to the OPT OUT project.
If you decide to opt-out, please let us know why, so we might be able to improve in the future.
The builds are only triggered if the Revision in Phabricator is created/updated
via arc diff
. If you update a Revision via the Web UI it will not
trigger a build.
To get a patch on Phabricator tested the build server must be able to apply the patch to the checked out git repository. If you want to get your patch tested, please make sure that either:
- You set a git hash as
sourceControlBaseRevision
in Phabricator which is - available on the Github repository, or you define the dependencies of your
- patch in Phabricator, or your patch can be applied to the main branch.
Only then can the build server apply the patch locally and run the builds and tests.
Phabricator will automatically trigger a build for every new patch you upload or modify. Phabricator shows the build results at the top of the entry:
The CI will compile and run tests, run clang-format and clang-tidy on lines changed.
If a unit test failed, this is shown below the build status. You can also expand the unit test to see the details: .
Restarting the buildbots can be accomplished be deleting the pods running the buildbots. Kubernetes will automatically recreate the pod, essentially performing a restart.
To find the name of the buildbot pod, first make sure you are using the correct
cluster configuration with kubectl
as the windows and linux builders are on
separate clusters.
Then, find the name of the buildbot pod:
kubectl get pods | grep buildbot
Once you have the name of the pod, you can run the following command:
kubectl delete pod <pod name from previous step>
This command might take a couple minutes to execute as kubernetes stops the running processes/container. The new pod will then spin up and everything will hopefully work after the restart.
We're happy to get help on improving the infrastructure and workflows!
Please check contibuting first.
Development gives an overview how different parts interact together.
Playbooks shows concrete examples how to, for example, build and run agents locally.
If you have any questions please contact by mail or find user "goncharov" on LLVM Discord.
-
Playbooks for installing/upgrading agents and testing changes.
This project is licensed under the "Apache 2.0 with LLVM Exception" license. See LICENSE for details.