Note: This section describes the legacy KernelCI architecture. Please see the API transition timeline blog post for more details about when it will be premanently retired.
KernelCI native tests are orchestrated using the following components:
There are several instances hosted by the KernelCI project, for different needs as explained in the documentation. Each instance is made up of all the components listed above. It’s possible for anyone to set up their own private instance too. However, developers typically don’t need to set up a full instance but only the components they need to make changes to. Here’s how they all relate to each other:
graph TD
frontend(Web frontend) --> backend(Backend API)
backend --> mongo[(Mongo DB)]
core(Core tools) -.-> backend
core -.-> lava[LAVA labs]
lava -.-> backend
jenkins(Jenkins) --> core
jenkins --> k8s[Kubernetes]
Dotted lines are optional dependencies, and solid lines are required ones. To put this in words:
The Core tools can be used on their own on the command line without anything else installed. They may be used to build kernels locally, submit data to a Backend API, or schedule jobs in test labs such as LAVA. Jobs may be run without any Backend API, but if there is one then results can be sent to it. Then Jenkins uses Core tools to do all that, via Kubernetes for kernel builds. Finally, the Web frontend uses a Backend API but nothing depends on it (apart from end users) so it’s entirely optional.
Core KernelCI Python tools
How to add a new native test suite
KernelCI public instances
KernelCI maintainers (legacy system)
Tests
KernelCI Automated Bisection support