Skip to content

Commit 9406303

Browse files
authored
chore(ci): workflow cleanup and fixes (#7448)
## Summary Audit and cleanup of `.github/` CI workflows — fixes bugs, removes dead code, deduplicates config. ### Changes (one commit each) 1. Fix fuzz corpus restore path mismatch in `run-fuzzer.yml` — restore appended `-${{ inputs.extra_features }}` but persist did not, so previously-saved corpora were never restored 2. Fix stale PR message saying "30 days" when `days-before-pr-stale` is 14 3. Remove dead `Install Sweep` / `Timestamp Cache` steps from `setup-rust` action — they gate on undeclared `inputs.timestamp` so never run 4. Use `--bin` instead of `--package` in `bench-pr.yml` build step to match `bench.yml` 5. Right-size job timeouts: `bench.yml` commit-metadata 120m → 10m, `docs.yml` deploy 120m → 10m, `stale.yml` add missing timeout 6. Deduplicate SQL benchmark matrix — move single source of truth into `sql-benchmarks.yml` default input, derive lance targets from `mode` at runtime, sync matrix with develop (adds `local_dir` to statpopgen, drops stale `scale_factor`/`iterations` from fineweb/S3 entries, adds `vortex-compact` to clickbench) 7. Set `CARGO_TERM_COLOR: always` in `ci.yml` — `auto` disables color without a TTY, all other workflows already use `always` 8. Hoist R2 env vars to job-level in `run-fuzzer.yml`, `minimize_fuzz_corpus_workflow.yml`, `fuzz-coverage.yml` — removes 5 duplicate env blocks before and after for post merge, and on pr: ``` post-merge — before vs after: ┌──────────────┬─────────────────────┬────────────────────┬───────────────────┬──────────────────┐ │ Entry │ scale_factor before │ scale_factor after │ iterations before │ iterations after │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ clickbench │ - │ - │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-nvme │ 1.0 │ 1.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-s3 │ 1.0 │ 1.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-nvme-10 │ 10.0 │ 10.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-s3-10 │ 10.0 │ 10.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpcds │ 1.0 │ 1.0 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ statpopgen │ 100 │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ fineweb │ - │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ fineweb-s3 │ - │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ polarsignals │ 1 │ 1 │ - │ - │ └──────────────┴─────────────────────┴────────────────────┴───────────────────┴──────────────────┘ PR — before vs after: ┌──────────────┬─────────────────────┬────────────────────┬───────────────────┬──────────────────┐ │ Entry │ scale_factor before │ scale_factor after │ iterations before │ iterations after │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ clickbench │ - │ - │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-nvme │ 1.0 │ 1.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-s3 │ 1.0 │ 1.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-nvme-10 │ 10.0 │ 10.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpch-s3-10 │ 10.0 │ 10.0 │ - │ 10 │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ tpcds │ 1.0 │ 1.0 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ statpopgen │ 100 │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ fineweb │ 100 │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ fineweb-s3 │ 100 │ 100 │ - │ - │ ├──────────────┼─────────────────────┼────────────────────┼───────────────────┼──────────────────┤ │ polarsignals │ 1 │ 1 │ - │ - │ ``` --------- Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
1 parent 0e0401c commit 9406303

10 files changed

Lines changed: 49 additions & 208 deletions

File tree

.github/actions/setup-rust/action.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,3 @@ runs:
8383
- name: Install Protoc (for lance-encoding build step)
8484
if: runner.os != 'Windows'
8585
uses: ./.github/actions/setup-protoc
86-
87-
- name: Install Sweep
88-
shell: bash
89-
if: ${{ inputs.timestamp == 'true' && github.ref_name == 'develop' }}
90-
run: cargo install cargo-sweep
91-
92-
- name: Timestamp Cache
93-
shell: bash
94-
if: ${{ inputs.timestamp == 'true' && github.ref_name == 'develop' }}
95-
run: cargo sweep --stamp

.github/workflows/bench-pr.yml

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -137,82 +137,3 @@ jobs:
137137
secrets: inherit
138138
with:
139139
mode: "pr"
140-
benchmark_matrix: |
141-
[
142-
{
143-
"id": "clickbench-nvme",
144-
"subcommand": "clickbench",
145-
"name": "Clickbench on NVME",
146-
"targets": "datafusion:parquet,datafusion:vortex,duckdb:parquet,duckdb:vortex,duckdb:duckdb",
147-
"extra_data_formats": "vortex-compact"
148-
},
149-
{
150-
"id": "tpch-nvme",
151-
"subcommand": "tpch",
152-
"name": "TPC-H SF=1 on NVME",
153-
"targets": "datafusion:arrow,datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
154-
"scale_factor": "1.0"
155-
},
156-
{
157-
"id": "tpch-s3",
158-
"subcommand": "tpch",
159-
"name": "TPC-H SF=1 on S3",
160-
"local_dir": "vortex-bench/data/tpch/1.0",
161-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/tpch/1.0/",
162-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
163-
"scale_factor": "1.0"
164-
},
165-
{
166-
"id": "tpch-nvme-10",
167-
"subcommand": "tpch",
168-
"name": "TPC-H SF=10 on NVME",
169-
"targets": "datafusion:arrow,datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
170-
"scale_factor": "10.0"
171-
},
172-
{
173-
"id": "tpch-s3-10",
174-
"subcommand": "tpch",
175-
"name": "TPC-H SF=10 on S3",
176-
"local_dir": "vortex-bench/data/tpch/10.0",
177-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/tpch/10.0/",
178-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
179-
"scale_factor": "10.0"
180-
},
181-
{
182-
"id": "tpcds-nvme",
183-
"subcommand": "tpcds",
184-
"name": "TPC-DS SF=1 on NVME",
185-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
186-
"scale_factor": "1.0"
187-
},
188-
{
189-
"id": "statpopgen",
190-
"subcommand": "statpopgen",
191-
"name": "Statistical and Population Genetics",
192-
"targets": "duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
193-
"scale_factor": "100"
194-
},
195-
{
196-
"id": "fineweb",
197-
"subcommand": "fineweb",
198-
"name": "FineWeb NVMe",
199-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
200-
"scale_factor": "100"
201-
},
202-
{
203-
"id": "fineweb-s3",
204-
"subcommand": "fineweb",
205-
"name": "FineWeb S3",
206-
"local_dir": "vortex-bench/data/fineweb",
207-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/fineweb/",
208-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
209-
"scale_factor": "100"
210-
},
211-
{
212-
"id": "polarsignals",
213-
"subcommand": "polarsignals",
214-
"name": "PolarSignals Profiling",
215-
"targets": "datafusion:vortex",
216-
"scale_factor": "1"
217-
},
218-
]

.github/workflows/bench.yml

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ permissions:
1414
jobs:
1515
commit-metadata:
1616
runs-on: ubuntu-latest
17-
timeout-minutes: 120
17+
timeout-minutes: 10
1818
steps:
1919
- uses: actions/checkout@v6
2020
- name: Setup AWS CLI
@@ -118,83 +118,3 @@ jobs:
118118
secrets: inherit
119119
with:
120120
mode: "develop"
121-
benchmark_matrix: |
122-
[
123-
{
124-
"id": "clickbench-nvme",
125-
"subcommand": "clickbench",
126-
"name": "Clickbench on NVME",
127-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,datafusion:lance,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
128-
"build_lance": true
129-
},
130-
{
131-
"id": "tpch-nvme",
132-
"subcommand": "tpch",
133-
"name": "TPC-H SF=1 on NVME",
134-
"targets": "datafusion:arrow,datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,datafusion:lance,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
135-
"scale_factor": "1.0",
136-
"build_lance": true
137-
},
138-
{
139-
"id": "tpch-s3",
140-
"subcommand": "tpch",
141-
"name": "TPC-H SF=1 on S3",
142-
"local_dir": "vortex-bench/data/tpch/1.0",
143-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/tpch/1.0/",
144-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
145-
"scale_factor": "1.0"
146-
},
147-
{
148-
"id": "tpch-nvme-10",
149-
"subcommand": "tpch",
150-
"name": "TPC-H SF=10 on NVME",
151-
"targets": "datafusion:arrow,datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,datafusion:lance,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
152-
"scale_factor": "10.0",
153-
"build_lance": true
154-
},
155-
{
156-
"id": "tpch-s3-10",
157-
"subcommand": "tpch",
158-
"name": "TPC-H SF=10 on S3",
159-
"local_dir": "vortex-bench/data/tpch/10.0",
160-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/tpch/10.0/",
161-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
162-
"scale_factor": "10.0"
163-
},
164-
{
165-
"id": "tpcds-nvme",
166-
"subcommand": "tpcds",
167-
"name": "TPC-DS SF=1 on NVME",
168-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact,duckdb:duckdb",
169-
"scale_factor": "1.0"
170-
},
171-
{
172-
"id": "statpopgen",
173-
"subcommand": "statpopgen",
174-
"name": "Statistical and Population Genetics",
175-
"local_dir": "vortex-bench/data/statpopgen",
176-
"targets": "duckdb:parquet,duckdb:vortex,duckdb:vortex-compact",
177-
"scale_factor": "100"
178-
},
179-
{
180-
"id": "fineweb",
181-
"subcommand": "fineweb",
182-
"name": "FineWeb NVMe",
183-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact"
184-
},
185-
{
186-
"id": "fineweb-s3",
187-
"subcommand": "fineweb",
188-
"name": "FineWeb S3",
189-
"local_dir": "vortex-bench/data/fineweb",
190-
"remote_storage": "s3://vortex-ci-benchmark-datasets/${{github.ref_name}}/${{github.run_id}}/fineweb/",
191-
"targets": "datafusion:parquet,datafusion:vortex,datafusion:vortex-compact,duckdb:parquet,duckdb:vortex,duckdb:vortex-compact"
192-
},
193-
{
194-
"id": "polarsignals",
195-
"subcommand": "polarsignals",
196-
"name": "PolarSignals Profiling",
197-
"targets": "datafusion:vortex",
198-
"scale_factor": "1"
199-
},
200-
]

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ permissions:
2121
issues: write # audit-check creates issues
2222

2323
env:
24-
CARGO_TERM_COLOR: auto
24+
CARGO_TERM_COLOR: always
2525
RUST_BACKTRACE: 1
2626
NIGHTLY_TOOLCHAIN: nightly-2026-02-05
2727

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
name: github-pages
6767
url: ${{ steps.deployment.outputs.page_url }}
6868
runs-on: ubuntu-latest
69-
timeout-minutes: 120
69+
timeout-minutes: 10
7070
needs: build
7171
steps:
7272
# Note, since we provide the job with a CloudFlare scoped API token, we run it in a separate job that doesn't

.github/workflows/fuzz-coverage.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ env:
1111
jobs:
1212
coverage:
1313
name: "Coverage: ${{ matrix.fuzz_target }}"
14+
env:
15+
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
16+
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
17+
AWS_REGION: "us-east-1"
18+
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
1419
strategy:
1520
fail-fast: false
1621
matrix:
@@ -56,11 +61,6 @@ jobs:
5661

5762
- name: Download corpus from R2
5863
shell: bash
59-
env:
60-
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
61-
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
62-
AWS_REGION: "us-east-1"
63-
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
6464
run: |
6565
CORPUS_KEY="${{ matrix.fuzz_target }}_corpus.tar.zst"
6666
CORPUS_DIR="fuzz/corpus/${{ matrix.fuzz_target }}"

.github/workflows/minimize_fuzz_corpus_workflow.yml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ env:
3434
jobs:
3535
minimize:
3636
name: "Minimize ${{ inputs.fuzz_target }}"
37+
env:
38+
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
39+
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
40+
AWS_REGION: "us-east-1"
41+
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
3742
runs-on: >-
3843
${{ github.repository == 'vortex-data/vortex'
3944
&& format('runs-on={0}/runner=arm64-medium/disk=large/tag={1}-minimize', github.run_id, inputs.fuzz_target)
@@ -64,11 +69,6 @@ jobs:
6469

6570
- name: Restore corpus
6671
shell: bash
67-
env:
68-
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
69-
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
70-
AWS_REGION: "us-east-1"
71-
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
7272
run: |
7373
CORPUS_KEY="${{ inputs.fuzz_target }}_corpus.tar.zst"
7474
CORPUS_DIR="fuzz/corpus/${{ inputs.fuzz_target }}"
@@ -98,11 +98,6 @@ jobs:
9898
9999
- name: Persist corpus
100100
shell: bash
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"
106101
run: |
107102
CORPUS_KEY="${{ inputs.fuzz_target }}_corpus.tar.zst"
108103
CORPUS_DIR="fuzz/corpus/${{ inputs.fuzz_target }}"

.github/workflows/run-fuzzer.yml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ jobs:
6161
name: "Run ${{ inputs.fuzz_name || inputs.fuzz_target }}"
6262
env:
6363
FUZZ_NAME: ${{ inputs.fuzz_name || inputs.fuzz_target }}
64+
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
65+
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
66+
AWS_REGION: "us-east-1"
67+
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
6468
timeout-minutes: 230 # almost 4 hours
6569
runs-on: >-
6670
${{ github.repository == 'vortex-data/vortex'
@@ -95,14 +99,9 @@ jobs:
9599

96100
- name: Restore corpus
97101
shell: bash
98-
env:
99-
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
100-
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
101-
AWS_REGION: "us-east-1"
102-
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
103102
run: |
104103
CORPUS_KEY="${FUZZ_NAME}_corpus.tar.zst"
105-
CORPUS_DIR="fuzz/corpus/${FUZZ_NAME}-${{ inputs.extra_features }}"
104+
CORPUS_DIR="fuzz/corpus/${FUZZ_NAME}"
106105
107106
# Try to download corpus
108107
if python3 scripts/s3-download.py "s3://vortex-fuzz-corpus/$CORPUS_KEY" "$CORPUS_KEY"; then
@@ -189,11 +188,6 @@ jobs:
189188

190189
- name: Persist corpus
191190
shell: bash
192-
env:
193-
AWS_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
194-
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
195-
AWS_REGION: "us-east-1"
196-
AWS_ENDPOINT_URL: "https://01e9655179bbec953276890b183039bc.r2.cloudflarestorage.com"
197191
run: |
198192
CORPUS_KEY="${FUZZ_NAME}_corpus.tar.zst"
199193
CORPUS_DIR="fuzz/corpus/${FUZZ_NAME}"

0 commit comments

Comments
 (0)