name: Fuzz
on:
schedule:
- cron: "0 5 * * *" workflow_dispatch:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
fuzz:
name: Fuzz (${{ matrix.target }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- fuzz_vault_parse
- fuzz_env_parse
- fuzz_merge
- fuzz_recipient_parse
- fuzz_recovery
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 with:
toolchain: nightly - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 with:
workspaces: fuzz - uses: taiki-e/install-action@f092c064826410a38929a5791d2c0225b94432fe with:
tool: cargo-fuzz
- name: Fuzz ${{ matrix.target }}
run: cargo fuzz run ${{ matrix.target }} -- -max_total_time=60 -timeout=10
- name: Upload crash corpus on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with:
name: fuzz-artifacts-${{ matrix.target }}
path: fuzz/artifacts/
retention-days: 7