/kernelci-core

KernelCI build scripts for Jenkins and LAVA CI Tools

Primary LanguagePythonGNU Lesser General Public License v2.1LGPL-2.1

Welcome to KernelCI

This repository provides the core functions used on kernelci.org to monitor upstream Linux kernel branches, build many kernel variants, run tests, run bisections and schedule email reports.

This software can also be used to set up an independent instance and to build any arbitrary kernel branches and run any arbitrary tests.

You can find some general information as well as detailed technical instructions on the KernelCI wiki.

Contents of this repository

Configuration files

All the builds are configured in build-configs.yaml, with the list of branches to monitor and which kernel variants to build for each of them.

Then all the tests are configured in test-configs.yaml with the list of devices, test suites and which tests to run on which devices.

Details for the format of these files can be found on the wiki pages for build configurations and test configurations.

Python modules

There are Python modules in the kernelci package to parse and use the configuration data from the YAML files, as well as the kci_build command line tool to access this data directly and implement automated build jobs. Each module has some Python docstrings and the command line tool has detailed help messages for each command it can run.

Jenkins jobs

All the automated jobs on kernelci.org are run in Jenkins. Some legacy scripts are still being used in "freestyle" projects but they are gradually being replaced with Pipeline jobs. Each Pipeline job has a .jpl file located in the jenkins directory:

There are other variants based on stretch.jpl to build other file systems with extra tools needed to run specific test suites.

In addition to the job files, there are also some common library files located in the src/org/kernelci directory.

Dockerfiles

Each Jenkins Pipeline job runs in a Docker container. The Docker images used by these containers are built from jenkins/dockerfiles and pushed to the kernelci Docker repositories.

Test templates

The kernelci.org tests typically run in LAVA. Each LAVA test is generated using template files which can be found in the templates directory.

Reproducing KernelCI steps locally

It's possible to reproduce KernelCI builds locally, see the KernelCI command line wiki page.

All the KernelCI steps are being gradually refactored into command line tools in order to be able to run them in a terminal, or in any automation system rather than just Jenkins. The next steps to be added are to generate and submit test jobs and to run bisections.