From e343c735bc52853169e1a7b354a4a416aa90890d Mon Sep 17 00:00:00 2001 From: Dominic Evans Date: Wed, 22 Sep 2021 15:13:46 +0100 Subject: [PATCH] feat: add a fuzzing workflow to github actions Currently this won't actually run anything, because we haven't written any fuzz tests, but it sets up the framework for running the built-in Go fuzzer against any tests that do get added --- .github/workflows/ci.yml | 13 +++++++++++- .github/workflows/fuzz.yml | 42 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/fuzz.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7491a85a1..c0de67fd8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,4 @@ +--- name: CI on: [push, pull_request] @@ -15,6 +16,7 @@ jobs: env: DEBUG: true + GOFLAGS: -trimpath KAFKA_VERSION: ${{ matrix.kafka-version }} steps: @@ -25,9 +27,18 @@ jobs: with: go-version: ${{ matrix.go-version }} + - name: Get Go environment + id: go-env + run: | + echo "::set-output name=cache::$(go env GOCACHE)" + echo "::set-output name=modcache::$(go env GOMODCACHE)" + + - name: Set up cache - uses: actions/cache@v2 with: - path: ~/go/pkg/mod + path: | + ${{ steps.go-env.outputs.cache }} + ${{ steps.go-env.outputs.modcache }} key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml new file mode 100644 index 0000000000..1e4314ef4b --- /dev/null +++ b/.github/workflows/fuzz.yml @@ -0,0 +1,42 @@ +--- +name: Fuzzing + +on: [push, pull_request] + +jobs: + test: + name: Fuzz + runs-on: ubuntu-latest + + env: + GOFLAGS: -trimpath + + steps: + - uses: actions/checkout@v2 + + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: 1.17.x + + - name: Get Go environment + id: go-env + run: | + echo "::set-output name=cache::$(go env GOCACHE)" + echo "::set-output name=modcache::$(go env GOMODCACHE)" + + - name: Set up cache + uses: actions/cache@v2 + with: + path: | + ${{ steps.go-env.outputs.cache }} + ${{ steps.go-env.outputs.modcache }} + key: fuzz-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + fuzz-go- + + - name: Build Go tip + run: go install golang.org/dl/gotip@latest && gotip download + + - name: Run any fuzzing tests + run: gotip test -v -run=^Fuzz -test.fuzztime=5m ./...