diff --git a/.github/actions/setup-prebuild/action.yml b/.github/actions/setup-prebuild/action.yml index e073509260b..410c4d44420 100644 --- a/.github/actions/setup-prebuild/action.yml +++ b/.github/actions/setup-prebuild/action.yml @@ -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 }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2604483e03..dfa804a7710 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -174,7 +174,7 @@ 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 @@ -182,9 +182,7 @@ jobs: 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 @@ -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. @@ -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 @@ -249,7 +244,7 @@ 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 @@ -257,9 +252,7 @@ jobs: with: sccache: s3 - uses: actions/checkout@v6 - - uses: ./.github/actions/setup-rust - 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 @@ -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 @@ -311,7 +302,7 @@ 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 @@ -319,10 +310,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 cargo-hack uses: taiki-e/install-action@cargo-hack - name: Rust Lint - Clippy No Default Features @@ -335,7 +323,7 @@ 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 @@ -343,10 +331,9 @@ jobs: 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 @@ -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" @@ -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 @@ -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 @@ -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: @@ -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 @@ -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 @@ -760,7 +737,7 @@ 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 @@ -768,10 +745,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: Build and run C++ unit tests run: | mkdir -p vortex-cxx/build @@ -791,7 +765,7 @@ 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 @@ -799,10 +773,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 uv uses: spiraldb/actions/.github/actions/setup-uv@0.18.5 with: @@ -920,7 +891,7 @@ 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 @@ -928,10 +899,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 cargo-edit uses: taiki-e/cache-cargo-install-action@24c4eaa867646941dd8cd6f08c1497ea68d732ba with: