Skip to content

Commit a481860

Browse files
oetrsimonresch
authored andcommitted
chore: add a fuzzing workflow
1 parent 63a5f8d commit a481860

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

.github/workflows/fuzzing.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Fuzzing
2+
on:
3+
schedule:
4+
# At 03:00 UTC (01:00 CEST) every day
5+
- cron: '0 3 * * *'
6+
7+
merge_group:
8+
9+
workflow_dispatch:
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
13+
cancel-in-progress: true
14+
15+
jobs:
16+
17+
build_and_test:
18+
runs-on: ${{ matrix.os }}
19+
name: Fuzzing
20+
strategy:
21+
matrix:
22+
os: [ubuntu-22.04, macos-14]
23+
jdk: [21, 8]
24+
include:
25+
- jdk: 21
26+
# Workaround for https://github.com/bazelbuild/bazel/issues/14502
27+
extra_bazel_args: "--jvmopt=-Djava.security.manager=allow"
28+
- os: ubuntu-22.04
29+
arch: "linux"
30+
- os: macos-14
31+
arch: "macos-arm64"
32+
bazel_args: "--xcode_version_config=//.github:host_xcodes"
33+
34+
steps:
35+
- uses: actions/checkout@v4
36+
37+
- name: Set up JDK
38+
uses: actions/setup-java@v4
39+
with:
40+
distribution: zulu
41+
java-version: 21
42+
43+
- name: Set Build Buddy config
44+
run: .github/scripts/echoBuildBuddyConfig.sh ${{ secrets.BUILDBUDDY_API_KEY }} >> $GITHUB_ENV
45+
shell: bash
46+
47+
- name: Cache Fuzzing Corpus
48+
uses: actions/cache@v4
49+
with:
50+
path: |
51+
selffuzz/src/test/resources/.corpus
52+
53+
key: fuzzing-corpus-${{ matrix.os }}-${{ matrix.jdk }}-${{ github.run_id }}-${{ github.run_attempt }}
54+
restore-keys: |
55+
fuzzing-corpus-
56+
57+
- name: Build & Fuzz
58+
run: |
59+
bazelisk run ${{env.BUILD_BUDDY_CONFIG}} --java_runtime_version=remotejdk_${{ matrix.jdk }} ${{ matrix.bazel_args }} ${{ matrix.extra_bazel_args }} //selffuzz/src/test/java/com/code_intelligence/selffuzz/mutation:ArgumentsMutatorFuzzTest --jvmopt=-Xmx10000m -- -runs=1000000
60+
61+
# Notification job that runs after all matrix jobs complete
62+
notification:
63+
needs: build_and_test
64+
runs-on: ubuntu-24.04
65+
if: failure() # Run regardless of build_and_test outcome
66+
steps:
67+
- name: Slack notification on failure
68+
run: |
69+
curl -X POST -H 'Content-type: application/json' \
70+
--data '{
71+
"workflow_url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
72+
}' \
73+
${{ secrets.SLACK_WEBHOOK_URL }}

0 commit comments

Comments
 (0)