Skip to content

Website: bump download notes to v0.0.1-rc7 #24

Website: bump download notes to v0.0.1-rc7

Website: bump download notes to v0.0.1-rc7 #24

Workflow file for this run

name: ci
on:
pull_request:
push:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -D warnings
jobs:
ci:
name: fmt / clippy / test / deny (${{ matrix.os }})
# Linux is the primary target; Windows is exercised too so the
# platform-specific paths (data dir -> %APPDATA%, browser launch, the
# device-name guard) keep compiling and the tests keep passing there.
# The default feature set is used (no `desktop`/Tauri), so Windows needs
# no WebView2; just the MSVC toolchain the runner already ships.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
# Formatting is host-independent; run it once, on Linux. The regtest
# harness is a separate workspace (see regtest-harness/README.md), so it
# gets its own fmt pass; its compile/clippy/test runs live in the
# Regtest E2E workflow, which triggers on the paths that affect it.
- name: cargo fmt
if: runner.os == 'Linux'
run: |
cargo fmt --all --check
cargo fmt --all --check --manifest-path regtest-harness/Cargo.toml
- name: cargo clippy
run: cargo clippy --workspace --all-targets -- -D warnings
- name: cargo test
run: cargo test --workspace
# cargo-deny inspects the dependency graph (licenses / advisories /
# bans), which is host-independent; run it once, on Linux.
- name: install cargo-deny
if: runner.os == 'Linux'
uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- name: cargo deny
if: runner.os == 'Linux'
run: cargo deny --all-features check
gui-typecheck:
name: gui typecheck (tsc)
runs-on: ubuntu-latest
# First Node in CI, isolated to its own job so the Rust `ci` job above
# stays Node-free (and `cargo build` never needs Node). esbuild only
# strips types, so this job is what actually type-checks the web UI.
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 20
cache: npm
cache-dependency-path: crates/zkv/src/gui/assets/package-lock.json
- name: install
working-directory: crates/zkv/src/gui/assets
run: npm ci
- name: typecheck
working-directory: crates/zkv/src/gui/assets
run: npm run typecheck
# Guard the include_bytes! pipeline: the binary embeds the committed
# generated JS, so prove it still matches the sources. Regenerate and
# fail if anything drifted (i.e. someone edited a source without
# re-running scripts/build-gui-assets.sh).
- name: verify committed JS is in sync
run: |
scripts/build-gui-assets.sh
git diff --exit-code -- \
crates/zkv/src/gui/assets/js \
crates/zkv/src/gui/assets/api.js \
crates/zkv/src/gui/assets/forms.js
msrv:
name: msrv (1.88)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
# Validates the declared `rust-version = "1.88"`. This is librustzcash's
# effective wallet-stack floor: zcash_client_backend's lightwalletd
# `tonic` (0.14.6) and zcash_proofs' `home` (0.5.12) both require 1.88, so
# any librustzcash wallet consumer needs it too. Default features (so the
# `gui`/axum path is included); `desktop`/Tauri is excluded as it needs
# system webview libs and isn't built in CI.
- uses: dtolnay/rust-toolchain@1.88
- uses: Swatinem/rust-cache@v2
- name: cargo check
run: cargo check --workspace --all-targets
docs:
name: docs (zkv)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
# Build the `zkv` library docs and fail on any rustdoc warning (broken or
# private intra-doc links, bad doc HTML, etc.). Scoped to `zkv` (the
# facade + library); the binary-only sibling crates (faucet, oracles) are
# not part of the documented public surface. `--no-deps` keeps it to our
# own crate. The `gui` module is excluded (it's the web/desktop UI, not
# the library API): default features minus `gui`, which also drops the
# `desktop`/Tauri path that needs system webview libs.
- name: cargo doc
env:
RUSTDOCFLAGS: "-D warnings"
run: cargo doc --no-deps -p zkv --no-default-features --features transparent-inputs,default-subscriber,cli