Skip to content

ClusterFuzzLite Batch Fuzzing #1

ClusterFuzzLite Batch Fuzzing

ClusterFuzzLite Batch Fuzzing #1

Workflow file for this run

# SPDX-License-Identifier: AGPL-3.0-or-later
# ClusterFuzzLite Batch Fuzzing - Layer 6
#
# Runs weekly for 30 minutes per target for deep fuzzing
# Complements PR fuzzing with longer campaigns
name: ClusterFuzzLite Batch Fuzzing
on:
schedule:
# Every Sunday at 02:00 UTC
- cron: '0 2 * * 0'
workflow_dispatch: # Manual trigger
permissions: read-all
jobs:
batch_fuzzing:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sanitizer: [address, undefined, memory]
steps:
- name: Checkout code
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Build fuzzers (${{ matrix.sanitizer }})
id: build
uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
with:
language: rust
sanitizer: ${{ matrix.sanitizer }}
- name: Run fuzzers (${{ matrix.sanitizer }})
id: run
uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
fuzz-seconds: 1800 # 30 minutes per sanitizer
mode: 'batch'
sanitizer: ${{ matrix.sanitizer }}
output-sarif: true
- name: Upload SARIF (if crashes found)
if: always() && steps.run.outputs.sarif-output != ''
uses: github/codeql-action/upload-sarif@a4784f2dad6682d68cce8299ef20b1ca931bbdfb # v4
with:
sarif_file: ${{ steps.run.outputs.sarif-output }}
category: clusterfuzzlite-batch-${{ matrix.sanitizer }}
- name: Upload corpus
if: always()
uses: actions/upload-artifact@v4
with:
name: fuzz-corpus-${{ matrix.sanitizer }}
path: build/corpus
retention-days: 90