Optimize buffer ops #744
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: Linux musl | |
| # Concurrency mirrors the main "Linters and Tests" workflow: | |
| # - PRs: new commits cancel in-progress (outdated) runs. | |
| # - Push to develop: runs queue sequentially, never cancelled. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} | |
| on: | |
| push: | |
| branches: [develop] | |
| pull_request: { } | |
| workflow_dispatch: { } | |
| permissions: | |
| actions: read | |
| contents: read | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| rust-test-musl: | |
| name: "Rust tests (linux-musl)" | |
| timeout-minutes: 90 | |
| runs-on: >- | |
| ${{ github.repository == 'vortex-data/vortex' | |
| && format('runs-on={0}/runner=amd64-large/image=ubuntu24-full-x64-pre-v2/tag=rust-build-musl', github.run_id) | |
| || 'ubuntu-latest' }} | |
| container: | |
| image: ghcr.io/rust-lang/rust:1-alpine3.21 | |
| credentials: | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| env: | |
| # -crt-static makes build-script binaries dynamically linked so bindgen | |
| # (custom-labels, a transitive dep of vortex-io) can dlopen libclang; a | |
| # fully static musl build script panics with "Dynamic loading not supported". | |
| RUSTFLAGS: "-A warnings -C target-feature=-crt-static" | |
| steps: | |
| # Exclusions: | |
| # - CUDA crates have no CUDA toolkit / musl target (as in the wasm build). | |
| # - vortex-duckdb and its dependents can't build standalone for musl: its | |
| # build.rs has no prebuilt DuckDB for musl. The DuckDB extension builds it | |
| # against a musl DuckDB it compiles itself, so it is exercised there instead. | |
| - name: Install Alpine packages | |
| # tzdata provides /usr/share/zoneinfo; without it Alpine has no timezone | |
| # database and datetime tests fail with "failed to find time zone `UTC`". | |
| run: | | |
| apk add --no-cache build-base clang clang-dev llvm-dev cmake make perl \ | |
| pkgconf protobuf protobuf-dev openssl-dev zstd-dev git curl ca-certificates \ | |
| python3 python3-dev tar tzdata bash | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 | |
| - name: Install nextest | |
| shell: bash | |
| # Prebuilt static musl nextest binary; building it from source would | |
| # roughly double the cold-cache compile time of this job. | |
| run: | | |
| curl -LsSf https://get.nexte.st/latest/linux-musl | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
| - name: Run workspace tests for x86_64-unknown-linux-musl | |
| shell: bash | |
| run: | | |
| cargo nextest run --cargo-profile ci --locked --workspace --no-fail-fast \ | |
| --exclude vortex-cuda --exclude vortex-cub --exclude vortex-nvcomp \ | |
| --exclude gpu-scan-cli --exclude vortex-test-e2e-cuda \ | |
| --exclude vortex-duckdb --exclude duckdb-bench --exclude vortex-sqllogictest \ | |
| --exclude vortex-bench --exclude lance-bench --exclude datafusion-bench --exclude vortex-datafusion \ | |
| --exclude compress-bench --exclude random-access-bench --exclude vortex-bench-server | |
| - name: Alert incident.io | |
| if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
| uses: ./.github/actions/alert-incident-io | |
| with: | |
| api-key: ${{ secrets.INCIDENT_IO_ALERT_TOKEN }} | |
| alert-title: "Rust tests (linux-musl) failed on develop" | |
| deduplication-key: ci-rust-test-linux-musl-failure |