Skip to content

Nightly Fuzzing

Nightly Fuzzing #83

Workflow file for this run

#
# SPDX-License-Identifier: MIT
#
# Copyright (C) 2026 Daniel Bourdrez. All Rights Reserved.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree or at
# https://spdx.org/licenses/MIT.html
#
---
name: Nightly Fuzzing
on:
schedule:
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
time_per_target:
description: 'Number of seconds to fuzz each target (default: 120s)'
required: false
default: '120s'
permissions: { }
jobs:
fuzz:
if: github.event_name != 'schedule' || github.ref == 'refs/heads/main'
strategy:
fail-fast: false
matrix:
go: [ '1.26' ]
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d
with:
disable-sudo: true
egress-policy: block
allowed-endpoints: >
api.github.com:443
github.com:443
go.dev:443
golang.org:443
proxy.golang.org:443
results-receiver.actions.githubusercontent.com:443
release-assets.githubusercontent.com:443
*.blob.core.windows.net:443
- name: Checkout repo
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
fetch-depth: 0
- name: Init go
uses: bytemare/actions/init-go@e8f57f812a1e4012dc85c374bf56edd98be3ca41
with:
go-version: ${{ matrix.go }}
# Persist the dedicated CI fuzz cache across nightly runs so the fuzzer can
# keep benefiting from previously discovered interesting inputs.
- name: Restore fuzz cache
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
with:
path: .gocache-fuzz-ci
key: nightly-fuzz-${{ runner.os }}-go${{ matrix.go }}-${{ hashFiles('go.mod', 'go.sum', 'tests/**/*.go') }}
restore-keys: |
nightly-fuzz-${{ runner.os }}-go${{ matrix.go }}-
- name: Run Tests
run: make -C .github test
- name: Fuzz
env:
FUZZTIME: ${{ github.event.inputs.time_per_target }}
run: make -C .github fuzz-ci