Code Monkey home page Code Monkey logo

kernelci-core's Introduction

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.