name: BFLD MQTT Integration # Runs the env-gated mosquitto integration tests from iters 24 + 29 of the # BFLD rollout (ADR-118 / ADR-122 §2.2). Spins up an eclipse-mosquitto:2 # service container, exports BFLD_MQTT_BROKER, runs `cargo test --features # mqtt`. Local developers can reproduce with: # # scoop install mosquitto # Windows # # or: docker run -p 1883:1883 eclipse-mosquitto:2 # BFLD_MQTT_BROKER=tcp://localhost:1883 \ # cargo test -p wifi-densepose-bfld --features mqtt on: push: branches: - main - 'feat/adr-118-*' - 'feat/bfld-*' paths: - 'v2/crates/wifi-densepose-bfld/**' - '.github/workflows/bfld-mqtt-integration.yml' pull_request: paths: - 'v2/crates/wifi-densepose-bfld/**' - '.github/workflows/bfld-mqtt-integration.yml' workflow_dispatch: jobs: mqtt-live-broker: name: cargo test --features mqtt (live mosquitto) runs-on: ubuntu-latest timeout-minutes: 15 services: mosquitto: image: eclipse-mosquitto:2 ports: - 1883:1883 # Allow anonymous connections — local-only CI broker, no exposure # to the public internet, never touches production credentials. options: >- --health-cmd "mosquitto_pub -h localhost -t healthcheck -m ping || exit 1" --health-interval 5s --health-timeout 3s --health-retries 10 env: BFLD_MQTT_BROKER: tcp://localhost:1883 CARGO_TERM_COLOR: always CARGO_INCREMENTAL: 0 RUSTFLAGS: -D warnings steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Cache cargo registry + target uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git v2/target key: bfld-mqtt-${{ runner.os }}-${{ hashFiles('v2/Cargo.lock') }} - name: Wait for mosquitto to be ready run: | for i in {1..20}; do if nc -z localhost 1883; then echo "mosquitto reachable on port 1883 (attempt $i)" exit 0 fi echo "waiting for mosquitto ($i/20)..." sleep 1 done echo "mosquitto never became reachable" >&2 exit 1 - name: cargo test --no-default-features (baseline regression) working-directory: v2 run: cargo test -p wifi-densepose-bfld --no-default-features - name: cargo test (default features) working-directory: v2 run: cargo test -p wifi-densepose-bfld - name: cargo test --features mqtt (incl. live mosquitto roundtrip) working-directory: v2 run: cargo test -p wifi-densepose-bfld --features mqtt - name: cargo clippy --features mqtt (lint gate) working-directory: v2 run: cargo clippy -p wifi-densepose-bfld --features mqtt --all-targets -- -D warnings continue-on-error: true