aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/workflow/triage-step
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: prioritize blob-based base commitsAleksandr Nogikh2026-01-131-24/+17
| | | | | | | | | | | | | Consider Cc'd mailing lists when selecting the exact base commit. Among the base commits determined based on blob sha value from the git patch, first select the ones that match both the trees of the Cc'd subsystems and their primary branches. If it gives no exact match, select a base commit that comes from a tree of a Cc'd subsystem. As fallback, take any subsystem tree. This should prevent valid, but suprising patch series triage results.
* syz-cluster: guess base patch by blob hashes from the diffAleksandr Nogikh2026-01-091-19/+78
| | | | | Before traversing the list of trees, attempt to determine the base tree/commit by looking at the SHA hashes from the supplied git diffs.
* syz-cluster: build commit graph during triageAleksandr Nogikh2026-01-091-0/+1
| | | | | It will accelerate various commit search operations by orders of magnitude.
* syz-cluster: refactor DockerfilesAleksandr Nogikh2025-12-311-8/+2
| | | | | | | Copy everything into the build context. Add a .dockerignore file to avoid copying the definitely unnecessary files and folders. Check copyrights presence in Dockerfiles.
* syz-cluster: preserve branches when cloning a repoAleksandr Nogikh2025-11-171-1/+1
| | | | | | | | Remap remote branches to local ones both when polling remote repositories and when cloning the distributed repository. This will ensure that the branches are still accessible via TreeName/BranchName (it got broken during the latest changes).
* syz-cluster: simplify shared git repo mounting codeAleksandr Nogikh2025-11-122-27/+13
| | | | | | | | | | Instead of a complicated overlayfs setup, do a lightweight git clone in a way that the cloned local copy keeps on referencing the git object storage on the NFS. It's simpler code-wise and hopefully will be less susceptible to failures when local git operations coincide with a git fetch on the shared repository.
* syz-cluster: set workflow step retry strategyAleksandr Nogikh2025-10-221-0/+4
| | | | | | | | | | | | | When a triage or build step coincides with a cron job that polls new kernel trees, they often fail due to git command noticing that the repository is being updated. In this case, the step logs an error and exits with status=1. Argo workflows offers a functionality to retry such steps up to the specific number of times and with exponentially increasing backoffs. Configure the build and triage step templates to retry 3 times with 5 and then 10 minutes distance between the retries.
* syz-cluster: rewrite fuzz config generationAleksandr Nogikh2025-10-071-6/+6
| | | | | | | | Instead of a predefined set of manually written syz-manager configs, construct it dynamically from different bits. During triage, select not just one, but all matching fuzzer configurations and then merge them together.
* syz-cluster: support multiple campaigns per fuzz targetAleksandr Nogikh2025-10-071-26/+70
| | | | | | | | During triage, process each fuzzing campaign separately as they may have different base kernel revisions (e.g. if the newest revisions of the kernel no longer build/boot under the specific kernel configuration). Refactor the representation of the fuzzing targets in api.go.
* syz-cluster: support multiple fuzz tasksAleksandr Nogikh2025-10-011-6/+7
| | | | | Adjut the workflow template and the API to run multiple fuzzing campaigns as a part of single patch series processing.
* syz-cluster: switch away from bitnami/gitAleksandr Nogikh2025-09-031-1/+1
| | | | | | The image is to be deprecated. Closes #6350.
* syz-cluster: refactor fuzz config structuresAleksandr Nogikh2025-08-121-4/+3
| | | | | | | | Keep the fuzz-step parameters in a separate structure to minimize the field duplication. It will also facilitate the reuse of the same syzkaller config in several fuzzing configurations.
* syz-cluster: split tree and fuzz config selectionAleksandr Nogikh2025-07-311-5/+11
| | | | | | | | Not always are fuzzing targets well represented by their own kernel trees, so let's select a kernel tree and a fuzzing config separately. Drop explicit priorities and instead just sort the lists of trees and configs.
* syz-cluster: consider multiple trees during triageAleksandr Nogikh2025-07-281-44/+53
| | | | | | | | | Even if the target tree is specified in the patch title, there happen to be cases when it's actually only applicable to some other trees. So instead of choosing one particular tree and sticking to it, obtain an ordered list of candidates and pick the first to which the series actually applies.
* syz-cluster: always upload triage logsAleksandr Nogikh2025-07-281-20/+18
| | | | | | | | We used to only upload them on triage failure, but let's improve the inspectability even for successfully finished triage jobs. Slightly refactor the controller API around the triage result submission.
* syz-cluster: remember and share kernel tree URLsAleksandr Nogikh2025-07-171-3/+3
| | | | | | | | Share not just the tree name (mainline, net, etc), but also the full URL to check out the repository. For that, add one more field to the Build entity and adjust email reporting templates.
* syz-cluster: update Go version in DockerfilesAleksandr Nogikh2025-07-141-1/+1
| | | | | For some reason, it does not download the newer toolchain versions automatically.
* syz-cluster: share and display triage logsAleksandr Nogikh2025-04-111-2/+6
| | | | For now, only share it for the skipped series.
* syz-cluster: share the series skip reasonAleksandr Nogikh2025-04-111-6/+10
| | | | | | | | The existing "no suitable commits found" reason is way too ambiguous. Make CommitSelector return the exact reason why it decides not to proceed with the particular patch series and display the reason on the web dashboard.
* syz-cluster: download latest corpuses from syzbotAleksandr Nogikh2025-03-111-3/+4
|
* syz-cluster: add net configAleksandr Nogikh2025-03-111-3/+3
| | | | | | Refactor Tree structure to host both the kernel config and the fuzzer config. Add some basic net fuzzing configs.
* syz-cluster: make image prefix and tag configurableAleksandr Nogikh2025-02-261-1/+1
| | | | | | | | | Accept IMAGE_PREFIX and IMAGE_TAG parameters that allow to reuse the Makefile and a lot of k8s configurations both for local and prod environments. Refactor Makefile: define build-* and push-* rules, use templates to avoid repetition.
* syz-cluster: build latest revisions of base kernelsAleksandr Nogikh2025-02-181-2/+7
| | | | | | Once a new kernel revision becomes available, build it to figure out whether it's buildable. This information will be used in the triage step to figure out the right base kernel revision.
* syz-cluster: simplify the triage resultAleksandr Nogikh2025-02-181-16/+13
| | | | | | | | | | | Instead of giving several base commits to try, make the more concrete decision at the triage step and return only one option. This relies on the triager always having the information about the current state of the each tree, which will be added in the following commit. As the result, the workflow script becomes much simpler.
* syz-cluster: set resource limitsAleksandr Nogikh2025-02-041-1/+13
| | | | | It will be important once we deploy to GKE. For now, let's set just some limits, we'll adjust them over time.
* syz-cluster: explicitly set the skip reasonAleksandr Nogikh2025-01-271-6/+16
| | | | | | | | It lets immediately distinguish the series that were actually processed from the series that were skipped early on. By storing a string, we also make it apparent why exactly the series was skipped.
* syz-cluster: initial codeAleksandr Nogikh2025-01-224-0/+243
The basic code of a K8S-based cluster that: * Aggregates new LKML patch series. * Determines the kernel trees to apply them to. * Builds the basic and the patched kernel. * Displays the results on a web dashboard. This is a very rudimentary version with a lot of TODOs that provides a skeleton for further work. The project makes use of Argo workflows and Spanner DB. Bootstrap is used for the web interface. Overall structure: * syz-cluster/dashboard: a web dashboard listing patch series and their test results. * syz-cluster/series-tracker: polls Lore archives and submits the new patch series to the DB. * syz-cluster/controller: schedules workflows and provides API for them. * syz-cluster/kernel-disk: a cron job that keeps a kernel checkout up to date. * syz-cluster/workflow/*: workflow steps. For the DB structure see syz-cluster/pkg/db/migrations/*.