Skip to content

Revert "Disable HTTP dynamic request header tests (#10862)" (#10869) #3264

Revert "Disable HTTP dynamic request header tests (#10862)" (#10869)

Revert "Disable HTTP dynamic request header tests (#10862)" (#10869) #3264

Workflow file for this run

name: check all features
on:
push:
branches:
- trunk
paths:
- '**/Cargo.toml'
pull_request:
paths:
- '**/Cargo.toml'
workflow_dispatch:
concurrency:
# Allow only one workflow per any non-trunk branch.
group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'trunk' && github.sha || 'any-sha' }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
CARGO_NET_GIT_FETCH_WITH_CLI: true
# CI performance optimizations
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
CARGO_NET_RETRY: 10
CARGO_HTTP_TIMEOUT: 60
jobs:
build:
name: Features Check
runs-on: spiceai-macos
env:
HAS_SPICEIO_SECRET: ${{ secrets.UNAS_SMB_PASS != '' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
fetch-depth: 1
- name: Set up Rust
uses: ./.github/actions/setup-rust
- name: Set up spiceio
if: runner.os == 'macOS' && env.HAS_SPICEIO_SECRET == 'true'
id: setup-spiceio
uses: spiceai/spiceio/.github/actions/setup@e31c63cbe88a6e284fc187875261106a05034775 # v0.5.4
with:
smb-url: smb://runner@192.168.3.148/ai_platform_dev
smb-pass: ${{ secrets.UNAS_SMB_PASS }}
token: ${{ github.token }}
bucket: sccache
region: us-west-1
- name: Set up make
uses: ./.github/actions/setup-make
- name: Set up cc
uses: ./.github/actions/setup-cc
- name: Check if sccache can be set up
run: |
if [ -z "${{ secrets.TEST_MINIO_ENDPOINT }}" ]; then
echo "SCCACHE_SETUP=false" >> $GITHUB_ENV
echo "RUSTC_WRAPPER=" >> $GITHUB_ENV
else
echo "SCCACHE_SETUP=true" >> $GITHUB_ENV
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
fi
- name: Set up sccache
if: runner.os == 'macOS' && env.SCCACHE_SETUP == 'true' && steps.setup-spiceio.outputs.endpoint != ''
uses: ./.github/actions/setup-sccache
with:
minio_endpoint: ${{ secrets.TEST_MINIO_ENDPOINT }}
spiceio_endpoint: ${{ steps.setup-spiceio.outputs.endpoint }}
- name: Cache cargo-hack binary
id: cache-cargo-hack
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ~/.cargo/bin/cargo-hack
key: cargo-hack-${{ runner.os }}-${{ runner.arch }}-0.6.31
- name: Install cargo-hack
if: steps.cache-cargo-hack.outputs.cache-hit != 'true'
run: cargo install cargo-hack --version 0.6.31 --locked
# Use cargo-hack to efficiently check all feature combinations
# This reuses build artifacts between checks, making it much faster than
# running individual cargo check commands
# Note: --each-feature already includes a run with --no-default-features,
# so we don't need to specify it separately
- name: Check all feature combinations
run: |
cargo hack check --each-feature --profile lint \
--exclude-features default,extended_tests,models,cuda,metal,mcp,odbc,release,kafka,iceberg-write,snapshots,tpc-extension,spark,s3_vectors,bedrock,nfs
env:
RUSTC_WRAPPER: ${{ env.RUSTC_WRAPPER }}
AWS_ACCESS_KEY_ID: ${{ secrets.TEST_MINIO_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TEST_MINIO_SECRET_KEY }}
- name: Check runtime/openapi feature
run: cargo check --no-default-features --features runtime/openapi --profile lint
env:
RUSTC_WRAPPER: ${{ env.RUSTC_WRAPPER }}
AWS_ACCESS_KEY_ID: ${{ secrets.TEST_MINIO_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TEST_MINIO_SECRET_KEY }}
- name: Check snapshots feature
run: cargo check --no-default-features --features snapshots --profile lint
env:
RUSTC_WRAPPER: ${{ env.RUSTC_WRAPPER }}
AWS_ACCESS_KEY_ID: ${{ secrets.TEST_MINIO_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TEST_MINIO_SECRET_KEY }}
- name: Show sccache stats
if: runner.os == 'macOS' && env.SCCACHE_SETUP == 'true' && steps.setup-spiceio.outputs.endpoint != ''
run: sccache --show-stats
- name: Kill spiceio
if: always() && runner.os == 'macOS' && steps.setup-spiceio.outputs.pid != ''
run: kill ${{ steps.setup-spiceio.outputs.pid }} || true
- name: Upload spiceio logs
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: spiceio-features-logs
path: ${{ runner.temp }}/spiceio.log
if-no-files-found: ignore