Skip to content

release: vgi-rpc 0.2.0 — production hardening + transport_options + u… #26

release: vgi-rpc 0.2.0 — production hardening + transport_options + u…

release: vgi-rpc 0.2.0 — production hardening + transport_options + u… #26

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -D warnings
jobs:
fmt-clippy-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install Rust toolchain (MSRV 1.86)
uses: dtolnay/rust-toolchain@1.86.0
with:
components: rustfmt, clippy
- name: Cache cargo
uses: Swatinem/rust-cache@v2
- name: cargo fmt --check
run: cargo fmt --all -- --check
- name: cargo clippy
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: cargo test
run: cargo test --workspace --all-features --locked
- name: cargo doc
run: cargo doc --workspace --no-deps --all-features --locked
# trybuild creates per-fixture `target/tests/<name>/` sandboxes
# and tears them down before they finish. The rust-cache post
# step walks `target/` to fingerprint cache contents and trips on
# the half-cleaned-up dirs (`ENOENT: target/tests/target`).
# Removing the parent directory before the post-cache step runs.
- name: Tidy trybuild sandboxes before cache
if: always()
run: rm -rf target/tests
conformance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@1.86.0
- uses: Swatinem/rust-cache@v2
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install vgi-rpc conformance harness
# Pinned to the 0.19 line, which carries the slim describe-v4
# schema and the `TestDescribeConformance` class that requires
# the `conformance_describe` fixture provided by
# `test_rust_conformance.py`. Bump the range as the upstream
# Python suite evolves so CI stays reproducible.
run: |
python -m pip install --upgrade pip
# `external` extra pulls in aiohttp, required by the
# external_fetch path the upstream test suite exercises.
pip install "vgi-rpc[http,cli,external]>=0.19.1,<0.20" pytest pytest-timeout httpx
- name: Build conformance worker
run: cargo build -p vgi-rpc-conformance-rust --locked
- name: Symlink worker
run: |
ln -sf target/debug/vgi-rpc-conformance-rust conformance-worker-rust
- name: Run conformance suite
# Full transport matrix — matches `scripts/conf.py run --transport all`.
# `shm_pipe` exercises the POSIX shared-memory side-channel (the worker
# is built with the `shm` feature) and `http_externalize_always` the
# external-location upload/fetch path.
env:
VGI_TRANSPORTS: pipe,subprocess,http,unix,http_externalize_always,shm_pipe
RUST_CONFORMANCE_WORKER: ${{ github.workspace }}/conformance-worker-rust
run: |
python -m pytest test_rust_conformance.py --timeout=10 --timeout-method=signal -v
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install MSRV toolchain (1.86)
uses: dtolnay/rust-toolchain@1.86.0
- uses: Swatinem/rust-cache@v2
- name: Build on MSRV
run: cargo build --workspace --all-features --locked