ClusterFuzzLite Batch Fuzzing #26
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
| # SPDX-License-Identifier: MPL-2.0 | |
| # 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: | |
| contents: read | |
| jobs: | |
| batch_fuzzing: | |
| runs-on: ubuntu-latest | |
| # 30 min fuzzing (fuzz-seconds: 1800) + build/upload overhead per sanitizer, | |
| # so the cap must sit above the fuzz budget. | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # cargo-fuzz hard-codes ASan for Rust, so only `address` yields a valid | |
| # build (see .clusterfuzzlite/project.yaml for the full rationale). | |
| sanitizer: [address] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 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@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4 | |
| with: | |
| sarif_file: ${{ steps.run.outputs.sarif-output }} | |
| category: clusterfuzzlite-batch-${{ matrix.sanitizer }} | |
| - name: Upload corpus | |
| if: always() | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: fuzz-corpus-${{ matrix.sanitizer }} | |
| path: build/corpus | |
| retention-days: 90 |