There are several types of maintainer roles with different responsibilities:
Most maintainers are members of the TSC but additional people can be involved too.
At least one maintainer is assigned to each software component. The work involves reviewing pull requests on GitHUb, triaging issue, updating GitHub settings and facilitating the development workflow. Having “deputy” maintainers whenever possible also helps with the continuity of the project when regular maintainers are not available.
In addition to maintainers for each project, some GitHub administrators are available to make configuration changes at the organisation level. This includes managing teams, permissions for each project, adding / moving / removing projects, configurating workboards and updating any other general settings.
broonie
, khilman
, nuclearcat
The project repository contains the documentation of the project as well as some encrypted files and other administrative documents. Therefore it’s not strictly software but has the same requirements from a maintainer point of view.
Please note that other people not listed here might also have access to the encrypted files for practical resons (shared account passwords, sysadmin information etc.).
kernelci-project
gtucker
, nuclearcat
patersonc
The core tools provide the command line utilities and the
kernelci
Python package used to implement a KerneLCI pipeline and run
individual steps by hand (building kernels, scheduling tests…).
kernelci-core
nuclearcat
, jeny
arisut
The new KernelCI API is a work-in-progress replacement for the backend currently used in production. It also features a Pub/Sub interface to coordinate the pipeline services in a modular fashion.
kernelci-api
jeny
The KernelCI pipeline is also a work-in-progress based on the new API and its Pub/Sub interface. This is essentially to replace the Jenkins pipeline currently used in production.
kernelci-pipeline
jeny
KCIDB provides a set of tools to submit kernel test data to a common database.
kcidb
,
kcidb-io
kcidb-grafana
spbnick
kci-dev is a command line tool and library for kernel developers and maintainers.
kci-dev
arisut
Note: The
lava-docker
repository is about to join the LAVA GitLab organisation. See the email discussion for more details.
This project is to Simplify the installation and maintenance of a LAVA lab using Docker containers.
lava-docker
arisut
, montjoie
Services hosted by KernelCI all need someone to look after them and ensure they stay online and available. This is essentially sysadmin work with some code maintannce too depending on the cases.
Several Kubernetes clusters are used by KernelCI, to build kernels and run platform-independent tasks or kernel tests in containers (static analysis, KUnit, QEMU…).
khilman
, broonie
A number of virtual machine servers are being used to host various services such as Jenkins and the web frontend. They are currently all managed in Azure, but this may evolve over time. They require sysadmin maintenance, monitoring tools, backups…
nuclearcat
KCIDB uses BigQuery as a database engine. This requires setting up tokens and managing the associated Cloud resources.
spbnick
, khilman
KCIDB uses a Grafana instance as a prototype web dashboard. Additional instances may be set up for other use-cases, such as showing statistics about the KernelCI project in general.
spbnick
All the Docker images used by KernelCI are pushed to the Docker Hub. This requires some maintenance in particular to keep an eye on resource usage and to adjust permissions.
gtucker
, nuclearcat
Some advanced KernelCI features involve coordination between multiple software components and services. They also require dedicated maintainers to ensure they keep running as intended.
Tests orchestrated on kernelci.org are called the native KernelCI tests, unlike tests running in independent CI systems which provide results directly to KCIDB. This covers integration with test labs, rootfs images, pipeline configuration… anything related to running those tests and getting their results into the database.
nuclearcat
test-definitions
,
bootrr
,
cros-ec-tests
,
buildroot
,
kernelci-core/config
Just like tests, kernel builds orchestrated on kernelci.org are called the native KernelCI builds.
broonie
, nuclearcat
kernelci-core/config
,
kernelci-jenkins
For every test regression detected, an automated bisection is run whenever possible. This involves building kernels, running tests and checking their results in a coordinated way to then send an email report when the bisection succeeds.
gtucker
kernelci-core
,
bisect.jpl
As there are several KernelCI instances, it’s necessary to have people dedicated to each of them.
ToDo: Update with new API & Pipeline deployments as they become available.
As with any open-source project, ensuring communication between all the contributors, users and maintainers is essential. Several channels are available for KernelCI and each of them requires some maintenance too.
This is about keeping the #kernelci
IRC channel on libera.chat updated and
managing automated notifications sent to it (monitoring services, GitHub and
Jenkins integration…)
montjoie
All the KernelCI mailing lists are managed via groups.io. Maintaining them includes moderating incoming messages and new subscriptions, keeping settings up-to-date and dealing with changes to the schemes for each price plan.
broonie
, khilman
, padovan
The KernelCI Slack channel may be used as an alternative to IRC. However, more people are using IRC so Slack is only there to facilitate communication when IRC is not practical.
khilman
, spbnick
The KernelCI Twitter account is used to engage with a wider public audience: events, kernel developers, other test systems… It is also a way for the project to quickly share updates about the project’s news and, achievements.
gtucker
, padovan
Emails are sent regularly with a summary of the changes going into production and minutes from the various TSC and board meetings.
gtucker