Skip to content

docs: 0.1.1 release notes (inaugural release) #39

docs: 0.1.1 release notes (inaugural release)

docs: 0.1.1 release notes (inaugural release) #39

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check:
name: Check, Lint, Format, Test
# The workspace (uni-db + lance/arrow/datafusion + candle + ort + tree-sitter)
# is large enough that a debug `cargo nextest run` exhausts ubuntu-latest's
# ~14 GB disk. Use the GitHub-hosted larger runner `ubuntu-xlarge` (same one
# rustic-ai/uni-db's public PR test job uses). GitHub-hosted (not self-hosted)
# so it works for public/fork PRs; not parameterized.
runs-on: ubuntu-xlarge
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Cache cargo registry and build
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: uni-db seal (no raw uni-db in product crates)
run: |
# Product crates (memory/extract/cortex/pipes) must reach the graph
# only through uniko-store's typed API. Forbid `use uni_db` and the
# `.db()` escape hatch in their src/. Comments are exempt, as are
# intentional uses tagged `// ALLOW:`. Tests and the bench crate are
# intentionally out of scope.
matches=$(rg -n -e 'use uni_db' -e '\.db\(\)' \
crates/uniko-memory/src crates/uniko-extract/src \
crates/uniko-cortex/src crates/uniko-pipes/src \
| grep -vE ':[0-9]+:[[:space:]]*//' \
| grep -v 'ALLOW:' || true)
if [ -n "$matches" ]; then
echo "$matches"
echo "::error::raw uni-db usage found in a sealed product crate (route it through uniko-store)"
exit 1
fi
echo "uni-db seal intact"
# The uniko-cuda / uniko-metal wheel variants are workspace members (for
# dep inheritance) but reuse bindings/uniko-py/src with a GPU feature.
# `-cuda` would download the ORT CUDA sidecar and `-metal` only builds on
# macOS, so exclude both from the Linux `--workspace` runs. They are built
# and validated in the release workflow's dedicated GPU jobs.
- name: cargo check
run: cargo check --workspace --exclude uniko-cuda --exclude uniko-metal
- name: cargo clippy
run: cargo clippy --workspace --exclude uniko-cuda --exclude uniko-metal -- -D warnings
- name: cargo fmt
run: cargo fmt --all --check
# Guard the crates.io release order: assert release.yml's PUBLISH_ORDER is
# uniko-api's full publishable closure in topological order. Catches a new
# workspace crate missing from the list, or a versioned dev-dependency
# cycle, BEFORE tagging — crates.io is append-only, so a bad partial
# publish can't be undone. Fast (cargo metadata, no compile).
- name: Check crates.io publish order
run: python3 scripts/ci/check_publish_list.py
# Assert every version derives from [workspace.package].version: the
# internal [workspace.dependencies] pins match it, and wheel pyprojects
# stay `dynamic`. Catches version drift on every push (bump with
# `cargo set-version --workspace <ver>`).
- name: Check version sync
run: python3 scripts/ci/check_version_sync.py
- name: Install cargo-nextest
uses: taiki-e/install-action@nextest
- name: cargo nextest run
run: |
# Warm the shared ONNX model cache before the parallel run. Many
# integration tests across crates build a real local embedder and
# cold-download the SAME bge-small model into one on-disk cache
# (.uni_cache); run in parallel they race for the download lock and
# fail ("Lock acquisition failed: .uni_cache/onnx-embed/...blobs/*.lock").
# A serial pass over uniko-cortex's tests (they exercise the embedder)
# populates the cache first; the full parallel run is then a cache hit.
# The default test config fetches only `embed/default`, so one warm pass
# covers every crate. (If a future run shows a `nlp/default` or
# `rerank/default` lock error, broaden this warm filter to that crate.)
cargo nextest run --workspace --exclude uniko-cuda --exclude uniko-metal \
-E 'package(uniko-cortex)' --test-threads 1
cargo nextest run --workspace --exclude uniko-cuda --exclude uniko-metal
deny:
name: cargo-deny (licenses & advisories)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: cargo-deny
uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check