Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion .github/actions/setup-prebuild/action.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,49 @@
name: "Setup Prebuild"
description: "Minimal setup for runners with pre-built Rust toolchain, nextest, and sccache"
description: "Prebuild AMIs — uses pre-installed tools, falls back to full setup-rust for forks"

inputs:
repo-token:
description: "GitHub token for accessing the repository (typically secrets.GITHUB_TOKEN)"
required: false
default: "${{ github.token }}"
toolchain:
description: "optional override for the toolchain version (e.g. nightly)"
required: false
components:
description: "optional override for the components to install for the step (e.g. clippy, rustfmt, miri)"
default: "clippy, rustfmt"
required: false
targets:
description: "optional targets override (e.g. wasm32-unknown-unknown)"
required: false
enable-sccache:
description: "Should sccache be enabled, true by default."
required: false
default: "true"

runs:
using: "composite"
steps:
# Prebuild path: tools already installed, just configure sccache
- name: Configure sccache timeout
if: github.repository == 'vortex-data/vortex' && inputs.enable-sccache == 'true'
shell: bash
run: |
mkdir -p ~/.config/sccache
echo 'server_startup_timeout_ms = 15000' > ~/.config/sccache/config

- name: Pre-start sccache server
if: github.repository == 'vortex-data/vortex' && inputs.enable-sccache == 'true'
shell: bash
run: sccache --start-server &

# Fallback path: full setup for forks
- name: Full Rust setup
if: github.repository != 'vortex-data/vortex'
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ inputs.repo-token }}
toolchain: ${{ inputs.toolchain }}
components: ${{ inputs.components }}
targets: ${{ inputs.targets }}
enable-sccache: ${{ inputs.enable-sccache }}
86 changes: 27 additions & 59 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,17 +174,15 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-small/tag=rust-docs', github.run_id)
&& format('runs-on={0}/runner=amd64-small/image=ubuntu24-full-x64-pre/tag=rust-docs', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Docs
run: |
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps
Expand All @@ -196,7 +194,7 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner={1}/tag={2}', github.run_id, matrix.config.runner, matrix.config.name)
&& format('runs-on={0}/runner={1}/image=ubuntu24-full-x64-pre/tag={2}', github.run_id, matrix.config.runner, matrix.config.name)
|| 'ubuntu-latest' }}
env:
# disable lints for build, they will be caught in Rust lint job.
Expand Down Expand Up @@ -227,10 +225,7 @@ jobs:
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Install wasm32 target
if: ${{ matrix.config.target == 'wasm32-unknown-unknown' }}
run: rustup target add wasm32-unknown-unknown
Expand All @@ -249,17 +244,15 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=rust-min-deps', github.run_id)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=rust-min-deps', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
Comment thread
joseph-isaacs marked this conversation as resolved.
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@cargo-minimal-versions
- run: cargo minimal-versions check --direct --workspace --ignore-private
Expand All @@ -278,8 +271,6 @@ jobs:
sccache: s3
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-prebuild
- name: Install protoc
uses: ./.github/actions/setup-protoc
- name: Install nightly for fmt
run: rustup toolchain install $NIGHTLY_TOOLCHAIN --component rustfmt
- name: Rust Lint - Format
Expand Down Expand Up @@ -311,18 +302,15 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=rust-lint-no-default', github.run_id)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=rust-lint-no-default', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack
- name: Rust Lint - Clippy No Default Features
Expand All @@ -335,18 +323,17 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-xsmall/tag=public-api', github.run_id)
&& format('runs-on={0}/runner=amd64-xsmall/image=ubuntu24-full-x64-pre/tag=public-api', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
toolchain: ${{ env.NIGHTLY_TOOLCHAIN }}
- uses: ./.github/actions/setup-prebuild
- name: Install nightly for public-api
run: rustup toolchain install $NIGHTLY_TOOLCHAIN
- name: Regenerate public API lock files
run: cargo +$NIGHTLY_TOOLCHAIN xtask public-api
- name: Verify lock files are up to date
Expand Down Expand Up @@ -376,7 +363,7 @@ jobs:
- suite: tests
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-large/tag=rust-coverage-suite-{1}', github.run_id, matrix.suite)
&& format('runs-on={0}/runner=amd64-large/image=ubuntu24-full-x64-pre/tag=rust-coverage-suite-{1}', github.run_id, matrix.suite)
|| 'ubuntu-latest' }}
env:
RUSTFLAGS: "-Cinstrument-coverage -A warnings"
Expand All @@ -389,10 +376,7 @@ jobs:
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Install grcov
uses: taiki-e/install-action@grcov
- name: Install nextest
Expand Down Expand Up @@ -430,7 +414,7 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=rust-test-sanitizer', github.run_id)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=rust-test-sanitizer', github.run_id)
|| 'ubuntu-latest' }}
env:
# Add debug symbols and enable ASAN/LSAN with better output
Expand All @@ -455,16 +439,11 @@ jobs:
with:
compiler: llvm
cache-tools: true
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
toolchain: ${{ env.NIGHTLY_TOOLCHAIN }}
components: "rust-src, rustfmt, clippy, llvm-tools-preview"
- name: Install build dependencies
- uses: ./.github/actions/setup-prebuild
- name: Install nightly for sanitizer
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake
rustup toolchain install $NIGHTLY_TOOLCHAIN
rustup component add --toolchain $NIGHTLY_TOOLCHAIN rust-src rustfmt clippy llvm-tools-preview
- name: Install nextest
uses: taiki-e/install-action@v2
with:
Expand Down Expand Up @@ -709,7 +688,7 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=bench-codspeed-{1}', github.run_id, matrix.shard)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=bench-codspeed-{1}', github.run_id, matrix.shard)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
Expand All @@ -719,9 +698,7 @@ jobs:
- uses: actions/checkout@v6
- name: Setup benchmark environment
run: sudo bash scripts/setup-benchmark.sh
- uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- uses: ./.github/actions/system-info
- name: Install Codspeed
uses: taiki-e/cache-cargo-install-action@24c4eaa867646941dd8cd6f08c1497ea68d732ba
Expand Down Expand Up @@ -760,18 +737,15 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=cxx-build', github.run_id)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=cxx-build', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Build and run C++ unit tests
run: |
mkdir -p vortex-cxx/build
Expand All @@ -791,18 +765,15 @@ jobs:
name: "SQL logic tests"
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-medium/tag=sql-logic-test', github.run_id)
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre/tag=sql-logic-test', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Install uv
uses: spiraldb/actions/.github/actions/setup-uv@0.18.5
with:
Expand Down Expand Up @@ -920,18 +891,15 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-xsmall/tag=rust-publish-dry-run', github.run_id)
&& format('runs-on={0}/runner=amd64-xsmall/image=ubuntu24-full-x64-pre/tag=rust-publish-dry-run', github.run_id)
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@v6
- id: setup-rust
uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/setup-prebuild
- name: Install cargo-edit
uses: taiki-e/cache-cargo-install-action@24c4eaa867646941dd8cd6f08c1497ea68d732ba
with:
Expand Down
Loading