Skip to content

Architecture Overview

Ana Guerrero Lopez edited this page Oct 19, 2018 · 2 revisions

The following diagram provides a global overview of the kernelci.org service.

KernelCI overview

KernelCI.org Dashboard

The dashboard itself has two components: a front-end and a back-end.

Front-end

Stateless web application that users typically interact with.

KernelCI front-end

Dashboard quick links

The top bar menu has access to the build, boots and test reports. You can use ? for filtering results:

  • Filtering the platforms that are failing to boot: http://kernelci.org/boot/?fail

  • Filtering which builds have failures: http://kernelci.org/build/?fail

Back-end

Provides the REST API and token based authentication.

KernelCI back-end

Read the documentation of the API at https://api.kernelci.org/

KernelCI.org Build System

The build system is provided by a Jenkins instance that uses several builders. The configuration used by the builders is managed by ansible playbook at https://github.com/kernelci/builder-config2

Build scripts

The build script and Jenkins Pipelines used by Jenkins are in the kernelci-core repository. This repository also contains all the script to create, submit and report LAVA jobs to and from the labs.

KernelCI.org Storage

All the artifacts produced by Jenkins: kernel images, rootfs, build logs, etc. and all the logs from LAVA are uploaded to the storage server https://storage.kernelci.org/ with the upload API.

Directory structure - rootfs

The rootfs are stored under https://storage.kernelci.org/images/

Directory structure - kernel build and logs

The kernel builds and logs are stored following a strict directory structure: https://storage.kernelci.org/_kernel tree_/_git describe_/_architecture_/_defconfig+Fragment=y_/

  • Kernel Tree: mainline, next, arm-soc, lsk, etc...

  • Git Describe: v3.19-rc4-23-g971780b70194, v3.19-rc4, etc..

  • Architecture: arm, arm64, mips, x86

  • Defconfig+Fragment=y: defconfig, allmodconfig, defconfig+CONFIG_RANDOMIZE_BASE=y/

For example: https://storage.kernelci.org/mainline/master/v4.19-rc8/arm64/defconfig/

The files found under this last directory are:

  • Kernel: Image, bzImage, vmlinux

  • modules.tar.xz: Tarball of modules from the specific build configuration. When extracted, the results should be a directory tree of the form /lib/modules//.

  • System.map: Symbol table from the specific build configuration.

  • kernel.config: The configuration used to build a specific configuration.

  • build.log: This is the log produce by the specific build configuration, only contains errors and warnings.

  • build.json: This is a file encoded using JSON to describe to a kernel build to the dashboard. A detailed schema is available here.

  • Device Trees: Typically, this is a folder called dtbs which contains all of the device tree blobs for a specific build configuration.

  • Lab Name: This is a directory that corresponds to a lab-id. It contains the platform logs in both .txt and .html format.

KernelCI.org Labs

Labs are independent and administrated by the company or contributor that's providing it. Labs run LAVA v2.

You can’t perform that action at this time.