ci: fix fuzz workflow - replace missing local-build.sh with fuzz.sh#108
Merged
Conversation
The nightly fuzz workflow called ./local-build.sh which has never existed in this repository. The actual build entrypoint is ./build (no extension) and the self-contained fuzz script is tests/script/fuzz/fuzz.sh. Root cause analysis: - ./local-build.sh: does not exist, exit 127 - plain ubuntu-latest runner lacks libobs-dev headers required by cmake (both c64script_fuzz and tests/CMakeLists.txt link OBS::libobs) Fix: - Replace Install clang/LLVM step with Install dependencies that adds libobs-dev, libcurl4-openssl-dev, libsimde-dev, cmake, ninja-build - Add Validate script exists preflight step (pwd, ls, test -x) - Replace ./local-build.sh linux with ./tests/script/fuzz/fuzz.sh - Remove RUN_FUZZ=1 env var (not consumed by fuzz.sh; FUZZ_TIME_SECONDS and FUZZ_JOBS are passed directly and already correct)
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes the nightly c64script-fuzz GitHub Actions workflow by switching it to the repository’s actual fuzzing entrypoint script and installing the required build dependencies so the fuzz target can build on a stock Ubuntu runner.
Changes:
- Replace the nonexistent
./local-build.sh linuxinvocation with./tests/script/fuzz/fuzz.sh. - Expand apt dependencies to include CMake/Ninja and required development headers (OBS, curl, simde).
- Add a pre-flight step to validate that
fuzz.shis present and executable; remove unusedRUN_FUZZenv var.
- fuzz.sh: accept positional arg ./fuzz.sh [seconds] overriding FUZZ_TIME_SECONDS - fuzz.sh: tee all libFuzzer output to console AND log (live CI visibility) - fuzz.sh: add start/end banners with configured and actual durations - fuzz.sh: add three hard failure guards: - empty log (binary produced no output) - no libFuzzer markers (no #N/exec/s/INFO: in log) - runtime < 50% of expected with no crashes (silent early exit) - fuzz.yml: add workflow_dispatch input fuzz_time_seconds (default 120s) - fuzz.yml: schedule runs use 14400s; dispatch uses input value - fuzz.yml: remove continue-on-error (guards now enforce correctness) - fuzz.yml: add Inspect fuzz artifacts step (corpus/crash counts, log tail, report)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
Problem
The nightly
c64script-fuzzCI workflow (fuzz.yml) failed with:Root Cause Analysis
Six candidate failure modes were investigated:
local-build.shexists?actions/checkout@v4uses repo rootfetch-depthissueubuntu-latestis LinuxPrimary root cause: The workflow called
./local-build.sh linuxwhich has never existed. The actual build entrypoint is./build(no.shextension, nolocal-prefix). The self-contained fuzz script is./tests/script/fuzz/fuzz.sh.Secondary issue: Even if the script name were corrected to
./build, the plainubuntu-latestrunner lackslibobs-devheaders required by cmake for the fuzz target (c64script_fuzzandtests/CMakeLists.txtboth link againstOBS::libobs).Fix
Changed
.github/workflows/fuzz.yml:libobs-dev,libcurl4-openssl-dev,libsimde-dev,cmake,ninja-build— all required by the fuzz cmake build on a plain ubuntu runner.pwd, listsfuzz.sh, asserts it is executable. Fails fast with a clear error if the script is missing../local-build.sh linuxwith./tests/script/fuzz/fuzz.sh— the self-contained fuzz entrypoint that handles cmake configure, build, fuzz run, and artifact collection.RUN_FUZZ: "1"env var — not consumed byfuzz.sh; the correct varsFUZZ_TIME_SECONDS: "14400"andFUZZ_JOBS: "2"are already set and directly consumed byfuzz.sh.Verification
local-build.shconfirmed absent:findreturned no results anywhere in the repo../tests/script/fuzz/fuzz.shconfirmed executable:-rwxrwxr-x.libobs-devconfirmed available in ubuntu 24.04 standard apt (universe): version30.0.2+dfsg-3build1.fuzz.shconfirmed to consumeFUZZ_TIME_SECONDS/FUZZ_JOBSenv vars (lines 125–126).fuzz.ymlis modified — no other files changed.