Files
qdrant/.github/workflows/edge-test.yml
dependabot[bot] ac58036e20 build(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0 (#9993)
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](11f9893b08...c771a70e62)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 16:53:15 -04:00

152 lines
5.0 KiB
YAML

name: Qdrant Edge Tests
on:
push:
branches: [ master, dev ]
pull_request:
branches: [ '**' ]
permissions:
contents: read
jobs:
edge-test:
name: Test Qdrant Edge
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# For PRs, only run on ubuntu to save CI time
os: >-
${{
github.event_name == 'pull_request'
&& fromJSON('["ubuntu-latest"]')
|| fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')
}}
steps:
# Building the examples links several large statically-linked binaries,
# which gets close to the runner's disk limit. Only the fast `rm -rf`
# based options are enabled to keep this step under a minute.
- name: Free disk space
if: runner.os == 'Linux'
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
android: true
dotnet: true
haskell: true
tool-cache: false
large-packages: false
docker-images: false
swap-storage: false
- name: Checkout Qdrant
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
# Don't leave GITHUB_TOKEN in .git/config: later steps build and run
# repository-controlled code (Rust/Python examples), which could
# otherwise read or exfiltrate the token. This job never pushes.
persist-credentials: false
- name: Install Rust nightly (for fmt)
uses: dtolnay/rust-toolchain@0f1b44df7e9cbb178d781a242338dfa5e243ad7f # nightly
with:
components: rustfmt
- name: Install Rust stable
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:
components: rustfmt, clippy
- name: Install mold
if: runner.os == 'Linux'
uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1
- name: Enable mold
if: runner.os == 'Linux'
run: |
mkdir .cargo
cat >.cargo/config.toml <<-EOF
[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/mold"]
EOF
- name: Install Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.14'
- name: Install Just
uses: ./.github/actions/setup-just
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
- name: Install tools
run: |
uv tool install ast-grep-cli
uv tool install maturin
- name: Setup Qdrant
uses: ./.github/actions/setup-qdrant
- name: Restore Rust build cache
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
shared-key: edge
# Only save the cache on dev; feature-branch caches would just get evicted under the 10 GB budget
save-if: ${{ github.ref == 'refs/heads/dev' }}
- name: Prepare data files
id: rs-prepare-data
working-directory: lib/edge
run: just prepare-data
- name: 🦀 Check Rust
working-directory: lib/edge
run: just rs-check
- name: 🦀 Test qdrant-edge-ffi (default features)
# Run on nightly: the workspace uses unstable features (cfg_select in
# lib/common), so stable can't compile it. nightly is already installed
# above (for fmt). +nightly also makes doctests use the nightly rustdoc,
# avoiding the E0514 toolchain-mismatch seen with a stray stable rustdoc.
# Default features (matrix on) — the surface general/non-mobile UniFFI
# consumers get.
run: cargo +nightly test --locked -p qdrant-edge-ffi
- name: 🦀 Test qdrant-edge-ffi (mobile surface, no default features)
# --no-default-features drops `matrix`, matching what the mobile
# Swift/Kotlin bindgen builds. Guards that the crate still compiles and
# passes with the O(n^2) search_matrix op excluded from the surface.
run: cargo +nightly test --locked -p qdrant-edge-ffi --no-default-features
- name: 🦀 Test qdrant-edge-ffi (all features)
# matrix + staging together, so the feature-gated surface can't bit-rot:
# the `staging` coverage-map exhaustiveness arm only compiles under it.
run: cargo +nightly test --locked -p qdrant-edge-ffi --all-features
- name: 🦀 Build Rust examples
working-directory: lib/edge
run: just rs-examples-build
- name: 🦀 Run Rust examples
working-directory: lib/edge
run: just rs-examples
- name: 🐍 Build Python edge
working-directory: lib/edge/python
run: just py-build
- name: 🐍 Run Python examples
working-directory: lib/edge
run: just py-examples
- name: Check for uncommitted changes
if: always()
run: git diff --exit-code