All of lore.kernel.org
 help / color / mirror / Atom feed
From: Helen Koike <helen.koike@collabora.com>
To: linuxtv-ci@linuxtv.org, dave.pigott@collabora.com,
	mripard@kernel.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-kselftest@vger.kernel.org,
	gustavo.padovan@collabora.com, pawiecz@collabora.com,
	spbnick@gmail.com, tales.aparecida@gmail.com,
	workflows@vger.kernel.org, kernelci@lists.linux.dev,
	skhan@linuxfoundation.org, kunit-dev@googlegroups.com,
	nfraprado@collabora.com, davidgow@google.com, cocci@inria.fr,
	Julia.Lawall@inria.fr, laura.nao@collabora.com,
	ricardo.canuelo@collabora.com, kernel@collabora.com,
	torvalds@linuxfoundation.org, gregkh@linuxfoundation.org
Subject: [PATCH 0/3] kci-gitlab: Introducing GitLab-CI Pipeline for Kernel Testing
Date: Wed, 28 Feb 2024 19:55:24 -0300	[thread overview]
Message-ID: <20240228225527.1052240-1-helen.koike@collabora.com> (raw)

Dear Kernel Community,

This patch introduces a `.gitlab-ci` file along with a `ci/` folder, defining a
basic test pipeline triggered by code pushes to a GitLab-CI instance. This
initial version includes static checks (checkpatch and smatch for now) and build
tests across various architectures and configurations. It leverages an
integrated cache for efficient build times and introduces a flexible 'scenarios'
mechanism for subsystem-specific extensions.

tl;dr: check this video to see a quick demo: https://youtu.be/TWiTjhjOuzg,
but don't forget to check the "Motivation for this work" below. Your feedback,
whether a simple thumbs up or down, is crucial to determine if it is worthwhile
to pursue this initiative.

GitLab is an Open Source platform that includes integrated CI/CD. The pipeline
provided in this patch is designed to work out-of-the-box with any GitLab
instance, including the gitlab.com Free Tier. If you reach the limits of the
Free Tier, consider using community instances like https://gitlab.freedesktop.org/.
Alternatively, you can set up a local runner for more flexibility. The
bootstrap-gitlab-runner.sh script included with this patch simplifies this
process, enabling you to run tests on your preferred infrastructure, including
your own machine.

For detailed information, please refer to the documentation included in the
patch, or check the rendered version here: https://koike.pages.collabora.com/-/linux/-/jobs/298498/artifacts/artifacts/Documentation-output/ci/gitlab-ci/gitlab-ci.html .


Motivation for this Work
========================

We all know tests are a major topic in the community, so let's mention the
specificities of this approach:

1. **Built-in User Interface:** GitLab CI/CD is growing in popularity and has an
user-friendly interface. Our experience with the upstream DRM-CI in the kernel
tree (see this blog post [https://www.collabora.com/news-and-blog/blog/2024/02/08/drm-ci-a-gitlab-ci-pipeline-for-linux-kernel-testing/] )
has provided insights into how such a system can benefit the wider community.

2. **Distributed Infrastructure:**
The proposed GitLab-CI pipeline is designed with a distributed infrastructure
model, being possible to run in any gitlab instance. 

3. **Reduce regressions:** Fostering a culture where people habitually run
validated tests and post their results can prevent many issues in post-merge
tests.

4. **Collaborative Testing Environment:** The kernel community is already
engaged in numerous testing efforts, including various GitLab-CI pipelines such
as DRM-CI, which I maintain, along with other solutions like KernelCI and
BPF-CI. This proposal is designed to further stimulate contributions to the
evolving testing landscape. Our goal is to establish a comprehensive suite of
common tools and files.

5. **Ownership of QA:** 
Discrepancies between kernel code and outdated tests often lead to misattributed
failures, complicating regression tracking. This issue, often arising from
neglected or deprioritized test updates, creates uncertainty about the source of
failures. Adopting an "always green pipeline" approach, as detailed in this
patch's documentation, encourages timely maintenance and validation of tests.
This ensures that testing accurately reflects the current state of the kernel,
thereby improving the effectiveness of our QA processes.

Additionally, if we discover that this method isn't working for us, we can
easily remove it from the codebase, as it is primarily contained within the ci/
folder.


Future Work
===========

**Expanding Static Checks:**
We have the opportunity to integrate a variety of static analysis tools,
including:
- dtbs_checks
- sparse
- yamllint
- dt-doc-validate
- coccicheck

**Adding Userspace Tests on VMs:**
To further our testing, we can implement userspace tests that run on virtual
machines (VMs), such as:
- kselftests
- kunit tests
- Subsystem-specific tests, customizable in the scenarios.

**Leveraging External Test Labs:**
We can extend our testing to external labs, similar to what DRM-CI currently
does. This includes:
- Lava labs
- Bare metal labs
- Using KernelCI-provided labs

**Other integrations**
- Submit results to KCIDB

**Lightweight Implementation for All Developers:**
We aim to design these tests to be lightweight, ensuring developers with limited
computing resources can still run essential tests. Resource-intensive tests can
be set to trigger manually, rather than automatically, to accommodate diverse
development environments.


Chat Discussions
================

For those interested in further discussions:

**Join Our Slack Channel:**
We have a Slack channel, #gitlab-ci, on the KernelCI Slack instance https://kernelci.slack.com/ .
Feel free to join and contribute to the conversation. The KernelCI team has
weekly calls where we also discuss the GitLab-CI pipeline.

**Acknowledgments:**
A special thanks to Nikolai Kondrashov, Tales da Aparecida - both from Red Hat -
and KernelCI community for their valuable feedback and support in this proposal.


I eagerly await your thoughts and suggestions on this initiative.

Also, if you want to see this initiave move faster, we are happy to discuss
funding options.

Best regards,
Helen Koike

Helen Koike (3):
  kci-gitlab: Introducing GitLab-CI Pipeline for Kernel Testing
  kci-gitlab: Add documentation
  kci-gitlab: docs: Add images

 .gitlab-ci.yml                                |   2 +
 Documentation/ci/gitlab-ci/gitlab-ci.rst      | 404 ++++++++++++++++++
 .../ci/gitlab-ci/images/job-matrix.png        | Bin 0 -> 159752 bytes
 .../gitlab-ci/images/new-project-runner.png   | Bin 0 -> 607737 bytes
 .../ci/gitlab-ci/images/pipelines-on-push.png | Bin 0 -> 532143 bytes
 .../ci/gitlab-ci/images/the-pipeline.png      | Bin 0 -> 91675 bytes
 .../ci/gitlab-ci/images/variables.png         | Bin 0 -> 277518 bytes
 Documentation/index.rst                       |   7 +
 MAINTAINERS                                   |   9 +
 ci/gitlab-ci/bootstrap-gitlab-runner.sh       |  55 +++
 ci/gitlab-ci/ci-scripts/build-docs.sh         |  35 ++
 ci/gitlab-ci/ci-scripts/build-kernel.sh       |  35 ++
 ci/gitlab-ci/ci-scripts/ici-functions.sh      | 104 +++++
 ci/gitlab-ci/ci-scripts/install-smatch.sh     |  13 +
 .../ci-scripts/parse_commit_message.sh        |  27 ++
 ci/gitlab-ci/ci-scripts/run-checkpatch.sh     |  19 +
 ci/gitlab-ci/ci-scripts/run-smatch.sh         |  45 ++
 ci/gitlab-ci/docker-compose.yaml              |  18 +
 ci/gitlab-ci/linux.code-workspace             |  11 +
 ci/gitlab-ci/yml/build.yml                    |  43 ++
 ci/gitlab-ci/yml/cache.yml                    |  26 ++
 ci/gitlab-ci/yml/container.yml                |  36 ++
 ci/gitlab-ci/yml/gitlab-ci.yml                |  71 +++
 ci/gitlab-ci/yml/kernel-combinations.yml      |  18 +
 ci/gitlab-ci/yml/scenarios.yml                |  12 +
 ci/gitlab-ci/yml/scenarios/file-systems.yml   |  21 +
 ci/gitlab-ci/yml/scenarios/media.yml          |  21 +
 ci/gitlab-ci/yml/scenarios/network.yml        |  21 +
 ci/gitlab-ci/yml/static-checks.yml            |  21 +
 29 files changed, 1074 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 Documentation/ci/gitlab-ci/gitlab-ci.rst
 create mode 100644 Documentation/ci/gitlab-ci/images/job-matrix.png
 create mode 100644 Documentation/ci/gitlab-ci/images/new-project-runner.png
 create mode 100644 Documentation/ci/gitlab-ci/images/pipelines-on-push.png
 create mode 100644 Documentation/ci/gitlab-ci/images/the-pipeline.png
 create mode 100644 Documentation/ci/gitlab-ci/images/variables.png
 create mode 100755 ci/gitlab-ci/bootstrap-gitlab-runner.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/build-docs.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/build-kernel.sh
 create mode 100644 ci/gitlab-ci/ci-scripts/ici-functions.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/install-smatch.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/parse_commit_message.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/run-checkpatch.sh
 create mode 100755 ci/gitlab-ci/ci-scripts/run-smatch.sh
 create mode 100644 ci/gitlab-ci/docker-compose.yaml
 create mode 100644 ci/gitlab-ci/linux.code-workspace
 create mode 100644 ci/gitlab-ci/yml/build.yml
 create mode 100644 ci/gitlab-ci/yml/cache.yml
 create mode 100644 ci/gitlab-ci/yml/container.yml
 create mode 100644 ci/gitlab-ci/yml/gitlab-ci.yml
 create mode 100644 ci/gitlab-ci/yml/kernel-combinations.yml
 create mode 100644 ci/gitlab-ci/yml/scenarios.yml
 create mode 100644 ci/gitlab-ci/yml/scenarios/file-systems.yml
 create mode 100644 ci/gitlab-ci/yml/scenarios/media.yml
 create mode 100644 ci/gitlab-ci/yml/scenarios/network.yml
 create mode 100644 ci/gitlab-ci/yml/static-checks.yml

-- 
2.40.1


             reply	other threads:[~2024-02-28 22:55 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-28 22:55 Helen Koike [this message]
2024-02-28 22:55 ` [PATCH 1/3] kci-gitlab: Introducing GitLab-CI Pipeline for Kernel Testing Helen Koike
2024-02-29  2:44   ` Bird, Tim
2024-02-29 16:15     ` Nicolas Dufresne
2024-02-29  9:02   ` Maxime Ripard
2024-02-29  9:23     ` Nikolai Kondrashov
2024-02-29  9:56       ` Maxime Ripard
2024-02-29 10:05         ` Laurent Pinchart
2024-02-29 20:21       ` Linus Torvalds
2024-03-01 10:27         ` Nikolai Kondrashov
2024-03-01 14:07           ` Mark Brown
2024-03-01 14:21             ` Nikolai Kondrashov
2024-03-01 20:10           ` Linus Torvalds
2024-03-04 21:45             ` Helen Koike
2024-03-07 22:43               ` Leonardo Brás
2024-03-02 22:10         ` Guenter Roeck
2024-03-03  0:01           ` Randy Dunlap
2024-03-03  9:30             ` Geert Uytterhoeven
2024-03-04  8:12               ` Geert Uytterhoeven
2024-03-04  9:15                 ` Maxime Ripard
2024-03-04 10:07                   ` Geert Uytterhoeven
2024-03-04 10:19                     ` Maxime Ripard
2024-03-04 11:12                       ` Geert Uytterhoeven
2024-03-04 11:28                         ` Maxime Ripard
2024-03-04  9:24           ` Maxime Ripard
2024-03-04 15:46             ` Guenter Roeck
2024-03-04 16:05               ` Maxime Ripard
2024-03-04 16:17                 ` Guenter Roeck
2024-03-04 17:09                   ` Maxime Ripard
2024-03-04 17:22                     ` Guenter Roeck
2024-03-04 19:44                     ` Guenter Roeck
2024-03-05 11:54         ` Michel Dänzer
2024-03-07 18:05     ` Nicolas Dufresne
2024-03-11  8:40       ` Maxime Ripard
2024-02-28 22:55 ` [PATCH 2/3] kci-gitlab: Add documentation Helen Koike
2024-02-28 22:55 ` [PATCH 3/3] kci-gitlab: docs: Add images Helen Koike
2024-02-28 23:07 ` [PATCH 0/3] kci-gitlab: Introducing GitLab-CI Pipeline for Kernel Testing Laurent Pinchart
2024-02-29  8:43   ` Maxime Ripard
2024-02-29  9:26   ` Nikolai Kondrashov
2024-02-29  9:34     ` Laurent Pinchart
2024-02-29 11:10       ` Nikolai Kondrashov
2024-02-29 11:19         ` Laurent Pinchart
2024-02-29 11:22           ` Nikolai Kondrashov
2024-02-29 11:41           ` Mark Brown
2024-02-29 11:53             ` Guillaume Tucker
2024-02-29 12:20               ` Laurent Pinchart
2024-02-29 12:25                 ` Laurent Pinchart
2024-02-29 14:12                   ` Nikolai Kondrashov
2024-02-29  9:39   ` Sakari Ailus
2024-02-29 11:09     ` Mark Brown
2024-02-29 12:20 ` Guillaume Tucker
2024-02-29 14:16   ` Nikolai Kondrashov
2024-02-29 16:28     ` Nicolas Dufresne
2024-03-01 21:56       ` Guillaume Tucker
2024-03-02 21:48         ` Gustavo Padovan
2024-03-04  8:33           ` Guillaume Tucker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240228225527.1052240-1-helen.koike@collabora.com \
    --to=helen.koike@collabora.com \
    --cc=Julia.Lawall@inria.fr \
    --cc=cocci@inria.fr \
    --cc=dave.pigott@collabora.com \
    --cc=davidgow@google.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo.padovan@collabora.com \
    --cc=kernel@collabora.com \
    --cc=kernelci@lists.linux.dev \
    --cc=kunit-dev@googlegroups.com \
    --cc=laura.nao@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linuxtv-ci@linuxtv.org \
    --cc=mripard@kernel.org \
    --cc=nfraprado@collabora.com \
    --cc=pawiecz@collabora.com \
    --cc=ricardo.canuelo@collabora.com \
    --cc=skhan@linuxfoundation.org \
    --cc=spbnick@gmail.com \
    --cc=tales.aparecida@gmail.com \
    --cc=torvalds@linuxfoundation.org \
    --cc=workflows@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.