Skip to content

nightly/tag fuzz

nightly/tag fuzz #13

Workflow file for this run

name: 'nightly/tag fuzz'
on:
schedule:
# Note: The schedule event can be delayed during periods of high
# loads of GitHub Actions workflow runs. High load times include
# the start of every hour. To decrease the chance of delay,
# schedule your workflow to run at a different time of the hour.
- cron: "25 0 * * *" # at 25 past midnight every day
push:
tags:
- '*'
workflow_dispatch: null
jobs:
fuzzrun:
name: "run native fuzzers"
runs-on: "ubuntu20.04-4cores-16GB"
steps:
- name: "Checkout"
uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1
- name: "Setup go"
uses: "actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491" # v5.0.0
with:
go-version-file: 'go.mod'
cache: true
cache-dependency-path: 'go.sum'
- name: "Get corpus directory"
id: "get-corpus-dir"
run: echo "corpus_dir=$(go env GOCACHE)/fuzz" >> $GITHUB_OUTPUT
shell: "bash"
- name: "Restore corpus"
uses: "actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2" # v4.0.0
id: "restore-corpus"
with:
path: "${{ steps.get-corpus-dir.outputs.corpus_dir }}"
# We need to ensure uniqueness of the key, as saving to a key more than once will fail (see Save corpus step).
# We never expect a cache hit with the key but we do expect a hit with the restore-keys prefix that is going
# to match the latest cache that has that prefix.
key: "nightlyfuzz-corpus-${{ github.run_id }}-${{ github.run_attempt }}"
restore-keys: "nightlyfuzz-corpus-"
- name: "Run native fuzzers"
# Fuzz for 1 hour
run: "cd fuzz && ./fuzz_all_native.py --seconds 3600"
- name: "Print failing testcases"
if: failure()
run: find . -type f|fgrep '/testdata/fuzz/'|while read f; do echo $f; cat $f; done
- name: "Save corpus"
uses: "actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2" # v4.0.0
# We save also on failure, so that we can keep the valuable corpus generated that led to finding a crash.
# If the corpus gets clobbered for any reason, we can remove the offending cache from the Github UI.
if: always()
with:
path: "${{ steps.get-corpus-dir.outputs.corpus_dir }}"
key: "${{ steps.restore-corpus.outputs.cache-primary-key }}"