Skip to content

fix: correct RCH topic subscriptions and diagnostics #149

fix: correct RCH topic subscriptions and diagnostics

fix: correct RCH topic subscriptions and diagnostics #149

name: Rust PR Quality Control
on:
pull_request:
branches: ["rust-next", "main"]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: rust-pr-quality-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
LXMF_REF: d61ed1171d07720e5cfba3d3b0a9c83496732221
jobs:
msrv-docs:
name: MSRV and Rustdoc
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.85
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.85"
- name: Check minimum supported Rust version
working-directory: rch
run: cargo check --workspace --all-targets --locked
- name: Build workspace documentation with denied warnings
working-directory: rch
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --workspace --no-deps --locked
- name: Validate local documentation links
shell: pwsh
working-directory: rch
run: ./scripts/check-doc-links.ps1
ui-quality:
name: UI Quality
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
cache-dependency-path: rch/ui/package-lock.json
- name: Install UI dependencies
working-directory: rch
run: npm --prefix ui ci
- name: Lint UI
working-directory: rch
run: npm --prefix ui run lint
- name: Type-check UI
working-directory: rch
run: npm --prefix ui run typecheck
- name: Test UI
working-directory: rch
run: npm --prefix ui run test
- name: Build UI
working-directory: rch
run: npm --prefix ui run build
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
components: rustfmt
- name: Check Rust formatting
working-directory: rch
run: cargo fmt --all -- --check
- name: Enforce shrinking Rust module budgets
shell: pwsh
working-directory: rch
run: ./scripts/check-rust-module-size.ps1
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
components: clippy
- name: Check locked dependencies
working-directory: rch
run: cargo fetch --locked
- name: Run clippy
working-directory: rch
run: cargo clippy --workspace --all-targets -- -D warnings
tests:
name: Workspace Tests
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
- name: Check locked dependencies
working-directory: rch
run: cargo fetch --locked
- name: Run workspace tests
working-directory: rch
run: cargo test --workspace -- --test-threads=1
release-builds:
name: Release Builds
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
- name: Check locked dependencies
working-directory: rch
run: cargo fetch --locked
- name: Build server release binary
working-directory: rch
run: cargo build --release -p r3akt-rch-server
- name: Build TAK service release binary
working-directory: rch
run: cargo build --release -p r3akt-tak-connector --bin r3akt-tak-service
dependency-audit:
name: Dependency Audit
runs-on: ubuntu-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
- name: Install cargo-audit
uses: taiki-e/install-action@cargo-audit
- name: Audit locked dependency graph
working-directory: rch
run: cargo audit --deny warnings
zmq-performance:
name: ZMQ batched projection floor
runs-on: windows-latest
steps:
- name: Check out RCH
uses: actions/checkout@v6
with:
path: rch
- name: Check out matching LXMF-rs
uses: actions/checkout@v6
with:
repository: FreeTAKTeam/LXMF-rs
path: LXMF-rs
ref: ${{ env.LXMF_REF }}
- name: Install Rust 1.88
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.88"
- name: Enforce the batched ZMQ projection floor
shell: pwsh
working-directory: rch
run: ./scripts/zmq-performance-gate.ps1