Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

kbuild: skip building kselftest when not required by jobfilter (speed up bisection)

Đang mở
#3,127 0 bình luận 1 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
50/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
python
Lĩnh vực
build-system, ci-cd

Hướng nghiên cứu

Bắt đầu với get_jobfilter() trong src/lava_callback.py, sau đó kiểm tra config/jobs.yaml và config/scheduler.yaml để lần theo các bài kiểm thử kselftest qua các liên kết sự kiện đến các build job tương ứng. So sánh điều này với logic lọc hiện tại trong kernelci/kbuild.py. Hoàn thành khi các kselftest job được yêu cầu vẫn giữ lại các artifact cần thiết, trong khi các bản build bisection không liên quan bỏ qua kselftest.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Goal

To speed up bisection, do not build kselftest when it isn't needed by the requested jobs (kselftest builds are expensive and dominate bisection turnaround).

This was originally attempted in #2729, but that approach needs more design work before it can land — see below. Converting to an issue to track the proper solution.

Current attempt (#2729)

In kernelci/kbuild.py, when a jobfilter is present, kselftest is disabled unless <build-name>-kselftest literally appears in the filter:

if node['jobfilter'] and self._kfselftest is True:
    kselftest_name = node['name'] + "-kselftest"
    if kselftest_name not in node['jobfilter']:
        self._kfselftest = False

Why this isn't enough

  1. Downstream tests are invisible to the build. kbuild.py runs in the build container and only receives node + params + a flat jobfilter list of strings. It has no knowledge of which tests consume kselftest artifacts. So a jobfilter containing a kselftest test (but not the kselftest build name) would silently produce a build without kselftest, and the test would fail mysteriously. The dependency knowledge lives in kernelci-pipeline:

    • test → needs-kselftest is identifiable from config/jobs.yaml (test_method: kselftest, kcidb_test_suite: kselftest.*)
    • build → test link is the event field in config/scheduler.yaml
  2. Possible naming bug. Dedicated kselftest build variants are already named kbuild-...-kselftest (e.g. config/jobs.yaml, scheduler.yaml). For such a node, node['name'] + "-kselftest" becomes kbuild-...-kselftest-kselftest, which never matches the filter — so kselftest would be disabled on the very build meant to produce it (this is exactly the bisection-of-a-kselftest-test path). Needs verification against real node['name'] values.

Proposed direction

Move the decision to kernelci-pipeline, which already has self._configs loaded and builds the jobfilter in get_jobfilter() (src/lava_callback.py):

  • When any requested job in the jobfilter resolves to a kselftest test (test_method == 'kselftest'), auto-enable kselftest on the corresponding build (e.g. set a kselftest: enable param on the build node, or ensure the kselftest-enabled build name is in the filter).
  • Otherwise, leave kselftest off so bisection builds stay fast.

The one non-trivial piece is reverse-resolving the scheduler graph (test → triggering build-node event → build job), since the build job doesn't inherently know its downstream tests. This is an in-memory config walk, not new infrastructure.

Closes #2729 (superseded by this issue).

Ngôn ngữ chính
Python
Star
120
Fork
108
Merge trung bình
1 ngày 12 giờ
Pull request đã merge (30 ngày)
21

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của kernelci/kernelci-core

Tất cả issue của kernelci/kernelci-core

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.