Skip to content

Fuzz (Nightly)

Fuzz (Nightly) #33

Workflow file for this run

name: Fuzz (Nightly)
# Extended fuzzing runs on a nightly schedule.
# Runs all fuzz targets for 300 seconds each to discover edge cases
# that the 60-second CI smoke tests miss.
on:
schedule:
- cron: '0 3 * * *' # 3 AM UTC daily
workflow_dispatch: # Allow manual triggering
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
fuzz-extended:
name: Fuzz Extended (${{ matrix.target }})
runs-on: ubuntu-latest
timeout-minutes: 60
defaults:
run:
working-directory: crosslink
strategy:
fail-fast: false
matrix:
target:
- fuzz_create_issue
- fuzz_search
- fuzz_import
- fuzz_dependency_graph
- fuzz_state_machine
- fuzz_cli_output
- fuzz_comments
- fuzz_labels
- fuzz_update_operations
- fuzz_milestones
- fuzz_subissues
- fuzz_relations
steps:
- uses: actions/checkout@v4
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
- name: Install cargo-fuzz
run: cargo install cargo-fuzz --locked
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
crosslink/target/
crosslink/fuzz/target/
key: ${{ runner.os }}-cargo-fuzz-nightly-${{ hashFiles('crosslink/Cargo.lock') }}
- name: Fuzz ${{ matrix.target }} (300s)
run: cargo +nightly fuzz run ${{ matrix.target }} -- -max_total_time=300