Fuzz #1259
This file contains hidden or 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: Fuzz | |
| on: | |
| schedule: | |
| - cron: "0 */4 * * *" # every 4 hours | |
| workflow_dispatch: | |
| jobs: | |
| io_fuzz: | |
| name: "IO Fuzz" | |
| timeout-minutes: 230 # almost 4 hours | |
| runs-on: | |
| - runs-on=${{ github.run_id }} | |
| - family=m8g.large | |
| - image=ubuntu24-full-arm64 | |
| - disk=large | |
| - extras=s3-cache | |
| - tag=io-fuzz | |
| steps: | |
| - uses: runs-on/action@v2 | |
| with: | |
| sccache: s3 | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/setup-rust | |
| with: | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| toolchain: nightly | |
| - name: Install llvm | |
| uses: aminya/setup-cpp@v1 | |
| with: | |
| compiler: llvm | |
| - name: Install cargo fuzz | |
| run: cargo install --locked cargo-fuzz | |
| - name: Restore corpus | |
| shell: bash | |
| run: | | |
| aws s3api head-object --bucket vortex-fuzz-corpus --key "io_corpus.tar.zst" --query ETag --output text > current_etag | |
| aws s3 cp s3://vortex-fuzz-corpus/io_corpus.tar.zst . | |
| tar -xf io_corpus.tar.zst | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} | |
| AWS_REGION: "us-east-1" | |
| AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" | |
| - name: Run fuzzing target | |
| id: fuzz | |
| run: RUST_BACKTRACE=1 cargo +nightly fuzz run --release --debug-assertions file_io -- -max_total_time=7200 | |
| continue-on-error: true | |
| - name: Archive crash artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: io-fuzzing-crash-artifacts | |
| path: fuzz/artifacts | |
| - name: Persist corpus | |
| shell: bash | |
| run: | | |
| tar -acf io_corpus.tar.zst fuzz/corpus/file_io | |
| aws s3api put-object --bucket vortex-fuzz-corpus --key "io_corpus.tar.zst" --body io_corpus.tar.zst --checksum-algorithm CRC32 --if-match "$(cat current_etag)" | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} | |
| AWS_REGION: "us-east-1" | |
| AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" | |
| - name: Fail job if fuzz run found a bug | |
| if: steps.fuzz.outcome == 'failure' | |
| run: exit 1 | |
| ops_fuzz: | |
| name: "Array Operations Fuzz" | |
| timeout-minutes: 230 # almost 4 hours | |
| runs-on: | |
| - runs-on=${{ github.run_id }} | |
| - family=m8g.large | |
| - image=ubuntu24-full-arm64 | |
| - disk=large | |
| - extras=s3-cache | |
| - tag=ops-fuzz | |
| steps: | |
| - uses: runs-on/action@v2 | |
| with: | |
| sccache: s3 | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/setup-rust | |
| with: | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| toolchain: nightly | |
| - name: Install llvm | |
| uses: aminya/setup-cpp@v1 | |
| with: | |
| compiler: llvm | |
| - name: Install cargo fuzz | |
| run: cargo install --locked cargo-fuzz | |
| - name: Restore corpus | |
| shell: bash | |
| run: | | |
| aws s3api head-object --bucket vortex-fuzz-corpus --key "array_ops_corpus.tar.zst" --query ETag --output text > current_etag | |
| aws s3 cp s3://vortex-fuzz-corpus/array_ops_corpus.tar.zst . | |
| tar -xf array_ops_corpus.tar.zst | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} | |
| AWS_REGION: "us-east-1" | |
| AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" | |
| - name: Run fuzzing target | |
| id: fuzz | |
| run: RUST_BACKTRACE=1 cargo +nightly fuzz run --release --debug-assertions array_ops -- -max_total_time=7200 | |
| continue-on-error: true | |
| - name: Archive crash artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: operations-fuzzing-crash-artifacts | |
| path: fuzz/artifacts | |
| - name: Persist corpus | |
| shell: bash | |
| run: | | |
| tar -acf array_ops_corpus.tar.zst fuzz/corpus/array_ops | |
| aws s3api put-object --bucket vortex-fuzz-corpus --key "array_ops_corpus.tar.zst" --body array_ops_corpus.tar.zst --checksum-algorithm CRC32 --if-match "$(cat current_etag)" | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }} | |
| AWS_REGION: "us-east-1" | |
| AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com" | |
| - name: Fail job if fuzz run found a bug | |
| if: steps.fuzz.outcome == 'failure' | |
| run: exit 1 |