This repository was archived by the owner on Jun 19, 2026. It is now read-only.
chore: release v0.10.0-rc.0 #1486
Workflow file for this run
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] | |
| merge_group: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| rust-lint: | |
| name: Rust / Lint | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install protoc | |
| run: sudo apt-get install -y protobuf-compiler | |
| - name: Run clippy (strict) | |
| run: cargo clippy --all-features --all-targets -- -D warnings | |
| rust-tests: | |
| name: Rust / Tests | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 30 | |
| env: | |
| CARGO_BUILD_JOBS: "4" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build Rust subject | |
| run: cargo build --package subject-rust | |
| - name: Test workspace (Rust-only) | |
| run: > | |
| cargo nextest run --workspace --jobs 2 | |
| -E 'not test(/lang_.*(typescript|swift)/) and not test(/(^|::)(typescript|swift)_/)' | |
| - name: Check schema compatibility policy | |
| run: bash scripts/check-schema-compat.sh | |
| rust-doc: | |
| name: Rust / Documentation | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install protoc | |
| run: sudo apt-get install -y protobuf-compiler | |
| - name: Build docs (xtask) | |
| run: cargo xtask doc | |
| rust-examples: | |
| name: Rust / Examples | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Run all examples | |
| run: | | |
| for example in rust-examples/examples/*.rs; do | |
| name="$(basename "${example}" .rs)" | |
| echo "::group::${name}" | |
| cargo run -p rust-examples --example "${name}" | |
| echo "::endgroup::" | |
| done | |
| rust-miri: | |
| name: Rust / Miri | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust nightly | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: miri | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Setup Miri | |
| run: cargo +nightly miri setup | |
| rust-conformance: | |
| name: Conformance / Rust | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install wasm-pack | |
| uses: taiki-e/install-action@wasm-pack | |
| - name: Build subject | |
| run: cargo build -p subject-rust --release | |
| - name: Run Rust TCP subject matrix tests | |
| run: > | |
| cargo nextest run -p spec-tests --test spec_matrix | |
| -E 'test(lang_rust_transport_tcp::)' | |
| - name: Run Rust binary payload transport matrix (mem/tcp) | |
| run: > | |
| cargo nextest run -p spec-tests --test spec_matrix | |
| -E 'test(lang_rust_to_rust_transport_mem_direction_bidirectional_binary_payload_transport_matrix) | |
| | test(lang_rust_to_rust_transport_tcp_direction_bidirectional_binary_payload_transport_matrix)' | |
| generated-bindings: | |
| name: Generated / Bindings Sync | |
| runs-on: bearcove-ubuntu-24.04 | |
| container: | |
| image: swift:6.1 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Trust checkout for Git inside container | |
| run: git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| - name: Show Swift version | |
| run: swift --version | |
| - name: Check Swift formatter | |
| run: swift format --help | |
| - name: Install Rust prerequisites | |
| run: apt-get update && apt-get install -y build-essential curl ca-certificates | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Regenerate TypeScript and Swift bindings | |
| run: cargo xtask codegen --typescript --swift | |
| - name: Check generated bindings are committed | |
| run: | | |
| DRIFT="$(git status --porcelain -- typescript/generated swift/subject/Sources/subject-swift)" | |
| if [ -n "$DRIFT" ]; then | |
| echo "Generated bindings are out of date. Run: cargo xtask codegen --typescript --swift" | |
| echo "$DRIFT" | |
| git --no-pager diff -- typescript/generated swift/subject/Sources/subject-swift || true | |
| exit 1 | |
| fi | |
| typescript-conformance: | |
| name: Conformance / TypeScript | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "25" | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v5 | |
| with: | |
| version: 11 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: TypeScript typecheck (tsgo) | |
| run: cd typescript && pnpm check | |
| - name: Build TypeScript packages | |
| run: cd typescript && pnpm run build | |
| - name: Generate TypeScript bindings | |
| run: cargo xtask codegen --typescript | |
| - name: Install Playwright browsers | |
| run: pnpm --filter "@bearcove/vox-playwright-tests" exec playwright install --with-deps chromium | |
| - name: Build Rust WebSocket peer server | |
| run: cargo build -p peer-server --bin ws-peer-server | |
| - name: Run TypeScript browser tests | |
| run: pnpm --filter "@bearcove/vox-playwright-tests" run test | |
| - name: Run TypeScript TCP subject matrix tests | |
| run: > | |
| cargo nextest run -p spec-tests --test spec_matrix --run-ignored all -E 'test(lang_typescript_transport_tcp::)' | |
| - name: Run TypeScript subject lifecycle tests | |
| run: > | |
| cargo nextest run -p spec-tests --test subject_lifecycle | |
| -E 'test(/(^|::)typescript_/)' | |
| swift-linux: | |
| name: Conformance / Swift (Linux) | |
| runs-on: bearcove-ubuntu-24.04 | |
| container: | |
| image: swift:6.1 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Trust checkout for Git inside container | |
| run: git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| - name: Show Swift version | |
| run: swift --version | |
| - name: Install Rust prerequisites | |
| run: apt-get update && apt-get install -y build-essential curl ca-certificates | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build subject | |
| run: swift build -c release --package-path swift/subject | |
| - name: Run VoxRuntime Swift tests | |
| run: swift test --no-parallel -Xlinker "-L${PWD}/target/release" | |
| - name: Run Swift TCP subject matrix tests | |
| run: > | |
| cargo nextest run -p spec-tests --test spec_matrix --run-ignored all | |
| -E 'test(lang_swift_transport_tcp::)' | |
| - name: Run Swift subject lifecycle tests | |
| run: > | |
| cargo nextest run -p spec-tests --test subject_lifecycle | |
| -E 'test(/(^|::)swift_/)' | |
| rust-wasm: | |
| name: Rust / WebAssembly | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Check vox-websocket for wasm32 | |
| run: cargo check --target wasm32-unknown-unknown -p vox-websocket | |
| - name: Check wasm-browser-tests for wasm32 | |
| run: cargo check --target wasm32-unknown-unknown -p wasm-browser-tests | |
| wasm-browser-tests: | |
| name: Browser / Rust-Wasm | |
| runs-on: bearcove-ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "25" | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v5 | |
| with: | |
| version: 11 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install wasm-pack | |
| uses: taiki-e/install-action@wasm-pack | |
| - name: Build wasm targets | |
| env: | |
| CARGO_PROFILE_DEV_DEBUG: "false" | |
| CARGO_PROFILE_DEV_OPT_LEVEL: "1" | |
| run: | | |
| wasm-pack build --dev --no-opt --target web rust/wasm-browser-tests --out-dir ../../wasm/tests/browser-wasm/pkg | |
| wasm-pack build --dev --no-opt --target web rust/wasm-inprocess-tests --out-dir ../../wasm/tests/browser-inprocess/pkg | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Install Playwright browsers | |
| run: pnpm --filter "@bearcove/vox-wasm-playwright-tests" exec playwright install --with-deps chromium | |
| - name: Build Rust WebSocket peer server | |
| run: cargo build -p peer-server --bin ws-peer-server | |
| - name: Run Wasm browser tests | |
| env: | |
| VOX_SKIP_WASM_PACK_BUILD: "1" | |
| run: pnpm --filter "@bearcove/vox-wasm-playwright-tests" run test | |
| rust-windows: | |
| name: Rust / Windows | |
| runs-on: windows-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build subject | |
| run: cargo build -p subject-rust | |
| - name: Test workspace (Rust-only, no cross-language) | |
| run: > | |
| cargo nextest run --workspace | |
| -E 'not test(/lang_.*(typescript|swift)/) and not test(/(^|::)(typescript|swift)_/)' |