ci(fuzz): narrow PR triggers and cover all fuzz targets (#4664)

Re-enable the Fuzz workflow (disabled_manually) with two changes that
address the congestion that likely caused it to be disabled:

- Narrow the PR trigger paths to fuzz/**, scripts/fuzz/** and
  fuzz.yml only. The broad crate paths (crates/ecstore|filemeta|utils)
  queued a ~45min fuzz-build on nearly every PR; coverage of those
  crates moves to the nightly schedule, which fuzzes against main.
- Expand the smoke matrix, nightly matrix, run.sh default set and the
  fuzz-build staging/upload steps from 3 to all 5 buildable targets:
  archive_extract, bucket_validation, local_metadata, path_containment,
  policy_ingress. archive_extract and policy_ingress were previously
  in no matrix.

The two *_storage_api.rs files are `mod` submodules of their parent
targets (bucket_validation, path_containment), not standalone bins, so
fuzz/Cargo.toml registers exactly 5 fuzz bins.

Smoke jobs run one target per parallel matrix job (-max_total_time=60),
so wall-clock stays per-target, well under the 15min budget for a
fuzz-only PR. A TODO(ci-8) hook marks where scheduled-failure alerting
will attach on the nightly job.

Refs rustfs/backlog#1149 (ci-9, absorbed sec-13), rustfs/backlog#1155
This commit is contained in:
Zhengchao An
2026-07-10 20:08:03 +08:00
committed by GitHub
parent 36428bc490
commit 2d1323d2f0
2 changed files with 26 additions and 8 deletions
+4 -1
View File
@@ -47,7 +47,10 @@ PREBUILT_BINARY_DIR=${PREBUILT_BINARY_DIR:-}
cd "$FUZZ_DIR"
mkdir -p "$ARTIFACT_ROOT"
targets="path_containment bucket_validation local_metadata"
# All buildable fuzz bins registered in fuzz/Cargo.toml. Keep in sync with the
# smoke/nightly matrices in .github/workflows/fuzz.yml. The *_storage_api.rs
# files are `mod` submodules of their parent targets, not standalone bins.
targets="archive_extract bucket_validation local_metadata path_containment policy_ingress"
if [ -n "$FUZZ_TARGET" ]; then
targets="$FUZZ_TARGET"
fi