ci: parallelize fuzz tests into 4 matrix groups (~3 min savings)#18879
Merged
ci: parallelize fuzz tests into 4 matrix groups (~3 min savings)#18879
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Parallelize fuzz tests into 4 matrix groups
ci: parallelize fuzz tests into 4 matrix groups (~3 min savings)
Feb 28, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Parallelizes the main-branch fuzzing job by splitting 24 fuzz targets into 4 matrix groups to reduce end-to-end CI time.
Changes:
- Added a
strategy.matrixto run fuzz tests in 4 parallel groups withfail-fast: false. - Replaced 24 hardcoded
run_fuzz_testcalls with a loop over a per-matrixtestslist. - Scoped concurrency and artifact names per matrix group to avoid cross-group cancellation and keep outputs separated.
Comments suppressed due to low confidence (1)
.github/workflows/ci.yml:1370
- The loop calls
run_fuzz_testbut does not check/accumulate its return status. Because the script continues after the loop (copying corpus data, etc.) and there is noset -e, an unexpected fuzz failure can be ignored and the step can still exit successfully. Track failures inside the loop (while continuing to run remaining fuzz targets) and ensure the step exits non-zero if any target fails unexpectedly; if you still want artifacts on failure, pair this withif: always()on the upload step.
# Run fuzz tests for this matrix group
for entry in ${{ matrix.tests }}; do
fuzz_name="${entry%%:*}"
package="${entry##*:}"
run_fuzz_test "${fuzz_name}" "${package}"
done
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
This was referenced Feb 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fuzzjob with 4 parallel matrix groupsfuzz-results-{group-name}fail-fast: falseif: always()to upload step so fuzz logs are captured even on failureOriginal prompt
This section details on the original issue you should resolve
<issue_title>[ci-coach] ci: parallelize fuzz tests into 4 matrix groups</issue_title>
<issue_description>### Summary
The fuzz job currently runs 24 tests sequentially, taking ~4.4 minutes. This PR splits them into 4 parallel matrix groups, reducing fuzz job duration to ~1.5 minutes — saving ~3 minutes per main branch push.
Optimization
Parallelize Fuzz Tests
Type: Matrix Strategy
Impact: ~3 minutes saved per main branch push (4.4 min → ~1.5 min, 3x speedup)
Risk: Low — same tests, same parameters, same logic; only execution order changes
Current structure (sequential):
Groups:
Each matrix job uploads its own artifact (
fuzz-results-{group-name}) so results are preserved per group.Expected Impact
CI Analysis Summary (Run #88)
Full Analysis Results
Other findings (no action needed):
testandintegrationjobs run independentlyvalidate-yaml→jsdependency is an intentional quality gateTesting Plan
Proposed by CI Coach workflow run #88
To create a pull request with the changes:
Show patch preview (143 of 143 lines)