feat: split ClusterFuzzLite into PR, batch, and corpus-pruning jobs - #1306
Conversation
|
Hello @Copilot, thank you for submitting a PR! We will respond as soon as possible. สวัสดี @Copilot ขอบคุณที่ส่ง PR เข้ามา เราจะตอบกลับให้เร็วที่สุดเท่าที่จะทำได้ |
…ng jobs - Add pr-fuzzing job: triggered by pull_request/push, code-change mode, 300 s - Add batch-fuzzing job: scheduled 18:30 UTC (01:30 AM UTC+7), batch mode, 3600 s - Add corpus-pruning job: scheduled 21:00 UTC (04:00 AM UTC+7), prune mode, 600 s - Use job-level concurrency groups (PR cancels in-progress; batch/prune do not) - Add GITHUB_STEP_SUMMARY reporting to each job for quick status visibility - Update fuzz/README.md to document all three job types and their schedules Co-authored-by: bact <128572+bact@users.noreply.github.com>
|
@copilot For security reason, consider moving write permissions from workflow level to job level. We still got the gh-pages warning, but this is no longer our first run. The log of the first run is here: |
Workflow-level permissions are restricted to contents:read. Each job that requires write access (corpus push, issue filing) declares its own permissions block explicitly. Co-authored-by: bact <128572+bact@users.noreply.github.com>
Done in 8d4837c. The workflow-level
The |
|


Replaces the single
fuzzingjob with three purpose-built jobs, each with appropriate trigger, duration, concurrency, and permission settings.What do these changes do
pr-fuzzing— triggered bypull_request/push;code-changemode; 300 s; per-branch concurrency withcancel-in-progress: trueto keep the dev loop fastbatch-fuzzing— scheduled nightly at 01:30 AM UTC+7 (18:30 UTC);batchmode; 3600 s; does not cancel in-progresscorpus-pruning— scheduled nightly at 04:00 AM UTC+7 (21:00 UTC), 2.5 h after batch starts;prunemode; 600 s; does not cancel in-progress$GITHUB_STEP_SUMMARY-pr-artifacts,-batch-artifacts) to avoid collisionscontents: read; each job declares only the permissions it needsfuzz/README.mdupdated to document all three jobs, their schedules, fuzz-seconds values, and the wall-clock overhead noteWhat was wrong
The single
fuzzingjob conflated quick PR checks, deep corpus-building sessions, and corpus housekeeping into one undifferentiated run. It had no corpus pruning at all, no job summaries, and used a ternary to pickcode-changevsbatchmode — withpushevents incorrectly falling through tobatch. Additionally, broadwritepermissions were granted at the workflow level rather than scoped to the jobs that require them.How this fixes it
Three separate jobs each have an explicit
if:condition ongithub.event_nameand, for scheduled jobs, ongithub.event.schedule. Concurrency is configured at the job level so batch and prune runs are never cancelled mid-flight, while PR runs still cancel stale in-progress runs per branch. Permissions are declared per-job:pr-fuzzingandbatch-fuzzingreceivecontents: writeandissues: write;corpus-pruningreceives onlycontents: write; all other jobs default tocontents: read.Your checklist for this pull request
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.