release: vgi-rpc 0.2.0 — production hardening + transport_options + u… #26
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: 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 |