name: Fuzz
on:
push:
branches: [main]
pull_request:
schedule:
- cron: "0 4 * * 1" workflow_dispatch:
permissions:
contents: read
jobs:
fuzz:
name: Fuzz ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [fuzz_known_good, fuzz_feed]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 with:
toolchain: nightly
components: rust-src
- run: cargo install cargo-fuzz --locked
- name: Fuzz (45s smoke on PR/push, 10 min on schedule)
run: |
if [ "${{ github.event_name }}" = "schedule" ]; then T=600; else T=45; fi
cargo +nightly fuzz run "${{ matrix.target }}" -- -max_total_time=$T -rss_limit_mb=4096
- name: Upload crash artifacts
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 with:
name: fuzz-crash-${{ matrix.target }}
path: fuzz/artifacts/
if-no-files-found: ignore