nightly/tag fuzz #13
This file contains 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
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 }}" |