Files
cpp-httplib/.github/workflows/cifuzz.yaml
yhirose be28cf9435 Run CIFuzz only for pull requests that touch the fuzzed code (#2521)
The fuzzers build httplib.h and the targets under test/fuzzing, so a pull
request that touches neither has nothing for CIFuzz to exercise. Fuzzing
is by far the longest job in CI: 600 seconds of fuzzing on top of
building the OSS-Fuzz image, which came to 12m20s on a recent run while
every other job finished within 5m7s.

Filter the trigger by path rather than shortening fuzz-seconds. OSS-Fuzz
recommends 600 seconds as a minimum, and the budget is divided among all
of the project's fuzz targets, so with five targets a shorter run would
leave each one well under two minutes. Skipping the job for
documentation-only changes cuts the wait without giving up any fuzzing
on the pull requests that do reach the parsers.
2026-08-02 00:33:11 -04:00

43 lines
1.3 KiB
YAML

name: CIFuzz
# The fuzzers only build httplib.h and the targets under test/fuzzing, so a
# pull request that touches neither has nothing for CIFuzz to exercise. Fuzzing
# is by far the longest job in CI (10 minutes of fuzzing on top of building the
# OSS-Fuzz image), and skipping it for documentation-only changes keeps the
# full 600 seconds for the pull requests that do reach the parsers.
on:
pull_request:
paths:
- 'httplib.h'
- 'test/fuzzing/**'
- '.github/workflows/cifuzz.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
jobs:
Fuzzing:
runs-on: ubuntu-latest
steps:
- name: Build Fuzzers
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
oss-fuzz-project-name: 'cpp-httplib'
dry-run: false
language: c++
- name: Run Fuzzers
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
oss-fuzz-project-name: 'cpp-httplib'
fuzz-seconds: 600
dry-run: false
language: c++
- name: Upload Crash
uses: actions/upload-artifact@v4
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts
path: ./out/artifacts