|
1 | | -name: Minimize Fuzz Corpus |
| 1 | +name: Minimize All Fuzz Corpora |
2 | 2 |
|
3 | 3 | concurrency: |
4 | | - # The group causes runs to queue instead of running in parallel. |
5 | | - group: minimize-corpus |
6 | | - # This prevents one run from overwriting another's minimization work (no compare-and-swap used). |
| 4 | + group: fuzz |
7 | 5 | cancel-in-progress: false |
8 | 6 |
|
9 | 7 | on: |
| 8 | + schedule: |
| 9 | + - cron: "0 0 * * 0" # every Sunday at midnight UTC |
10 | 10 | workflow_dispatch: { } |
11 | 11 |
|
12 | 12 | jobs: |
| 13 | + # ============================================================================ |
| 14 | + # IO Fuzzer |
| 15 | + # ============================================================================ |
13 | 16 | io_fuzz_minimize: |
14 | 17 | name: "Minimize IO Fuzz Corpus" |
15 | | - runs-on: |
16 | | - - runs-on=${{ github.run_id }} |
17 | | - - family=m8g.2xlarge |
18 | | - - image=ubuntu24-full-arm64 |
19 | | - - disk=large |
20 | | - - extras=s3-cache |
21 | | - - tag=io-fuzz-minimize |
22 | | - steps: |
23 | | - - uses: runs-on/action@v2 |
24 | | - with: |
25 | | - sccache: s3 |
26 | | - - uses: actions/checkout@v6 |
27 | | - - uses: ./.github/actions/setup-rust |
28 | | - with: |
29 | | - repo-token: ${{ secrets.GITHUB_TOKEN }} |
30 | | - toolchain: nightly |
31 | | - - name: Install cargo fuzz |
32 | | - run: cargo install --locked cargo-fuzz |
33 | | - - name: Restore corpus |
34 | | - shell: bash |
35 | | - run: | |
36 | | - aws s3 cp s3://vortex-fuzz-corpus/io_corpus.tar.zst . |
37 | | - tar -xf io_corpus.tar.zst |
38 | | - env: |
39 | | - AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
40 | | - AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
41 | | - AWS_REGION: "us-east-1" |
42 | | - AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" |
43 | | - - name: Minimize corpus |
44 | | - run: | |
45 | | - mkdir -p fuzz/corpus/file_io_2 |
46 | | - cargo +nightly fuzz cmin file_io fuzz/corpus/file_io -- fuzz/corpus/file_io_2 |
47 | | - rm -rf fuzz/corpus/file_io |
48 | | - mv fuzz/corpus/file_io_2 fuzz/corpus/file_io |
49 | | - - name: Persist corpus |
50 | | - shell: bash |
51 | | - run: | |
52 | | - tar -acf io_corpus.tar.zst fuzz/corpus/file_io |
53 | | - aws s3api put-object --bucket vortex-fuzz-corpus --key "io_corpus.tar.zst" --body io_corpus.tar.zst --checksum-algorithm CRC32 |
54 | | - env: |
55 | | - AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
56 | | - AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
57 | | - AWS_REGION: "us-east-1" |
58 | | - AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" |
| 18 | + uses: ./.github/workflows/minimize_fuzz_corpus_workflow.yml |
| 19 | + with: |
| 20 | + fuzz_target: file_io |
| 21 | + secrets: |
| 22 | + R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
| 23 | + R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
59 | 24 |
|
| 25 | + # ============================================================================ |
| 26 | + # Array Operations Fuzzer |
| 27 | + # ============================================================================ |
60 | 28 | ops_fuzz_minimize: |
61 | 29 | name: "Minimize Array Ops Fuzz Corpus" |
62 | | - runs-on: |
63 | | - - runs-on=${{ github.run_id }} |
64 | | - - family=m8g.2xlarge |
65 | | - - image=ubuntu24-full-arm64 |
66 | | - - disk=large |
67 | | - - extras=s3-cache |
68 | | - - tag=ops-fuzz-minimize |
69 | | - steps: |
70 | | - - uses: runs-on/action@v2 |
71 | | - with: |
72 | | - sccache: s3 |
73 | | - - uses: actions/checkout@v6 |
74 | | - - uses: ./.github/actions/setup-rust |
75 | | - with: |
76 | | - repo-token: ${{ secrets.GITHUB_TOKEN }} |
77 | | - toolchain: nightly |
78 | | - - name: Install cargo fuzz |
79 | | - run: cargo install --locked cargo-fuzz |
80 | | - - name: Restore corpus |
81 | | - shell: bash |
82 | | - run: | |
83 | | - aws s3 cp s3://vortex-fuzz-corpus/array_ops_corpus.tar.zst . |
84 | | - tar -xf array_ops_corpus.tar.zst |
85 | | - env: |
86 | | - AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
87 | | - AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
88 | | - AWS_REGION: "us-east-1" |
89 | | - AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" |
90 | | - - name: Minimize corpus |
91 | | - run: | |
92 | | - mkdir -p fuzz/corpus/array_ops_2 |
93 | | - cargo +nightly fuzz cmin array_ops fuzz/corpus/array_ops -- fuzz/corpus/array_ops_2 |
94 | | - rm -rf fuzz/corpus/array_ops |
95 | | - mv fuzz/corpus/array_ops_2 fuzz/corpus/array_ops |
96 | | - - name: Persist corpus |
97 | | - shell: bash |
98 | | - run: | |
99 | | - tar -acf array_ops_corpus.tar.zst fuzz/corpus/array_ops |
100 | | - aws s3api put-object --bucket vortex-fuzz-corpus --key "array_ops_corpus.tar.zst" --body array_ops_corpus.tar.zst --checksum-algorithm CRC32 |
101 | | - env: |
102 | | - AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
103 | | - AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
104 | | - AWS_REGION: "us-east-1" |
105 | | - AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" |
| 30 | + uses: ./.github/workflows/minimize_fuzz_corpus_workflow.yml |
| 31 | + with: |
| 32 | + fuzz_target: array_ops |
| 33 | + secrets: |
| 34 | + R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
| 35 | + R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
| 36 | + |
| 37 | + # ============================================================================ |
| 38 | + # Compress Roundtrip Fuzzer |
| 39 | + # ============================================================================ |
| 40 | + compress_fuzz_minimize: |
| 41 | + name: "Minimize Compress Roundtrip Fuzz Corpus" |
| 42 | + uses: ./.github/workflows/minimize_fuzz_corpus_workflow.yml |
| 43 | + with: |
| 44 | + fuzz_target: compress_roundtrip |
| 45 | + secrets: |
| 46 | + R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
| 47 | + R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
| 48 | + |
| 49 | + # ============================================================================ |
| 50 | + # GPU Compress Fuzzer (CUDA) |
| 51 | + # ============================================================================ |
| 52 | + gpu_compress_fuzz_minimize: |
| 53 | + name: "Minimize GPU Compress Fuzz Corpus" |
| 54 | + uses: ./.github/workflows/minimize_fuzz_corpus_workflow.yml |
| 55 | + with: |
| 56 | + fuzz_target: compress_gpu |
| 57 | + family: "g4dn" |
| 58 | + image: "ubuntu24-gpu-x64" |
| 59 | + extra_features: "cuda" |
| 60 | + secrets: |
| 61 | + R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} |
| 62 | + R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} |
0 commit comments