clone

a self-hosted sync node for lofi apps: jazz sync over iroh, ticket-gated, with no static ip or cloud needed

feat/connection-observability
lofi-node / .github / workflows / ci.yml
ci.yml 1.8K
1name: ci23on:4 pull_request:5 branches: [main]6 push:7 branches: [main]89jobs:10 gate:11 runs-on: ubuntu-latest12 steps:13 - uses: actions/checkout@v41415 - uses: denoland/setup-deno@v216 with:17 deno-version: v2.x1819 - name: Format, lint, typecheck20 run: deno task check2122 - uses: dtolnay/rust-toolchain@stable2324 - uses: Swatinem/rust-cache@v225 with:26 workspaces: native/iroh-js2728 - name: Build native addon29 run: deno task native3031 - name: Full test suite (codec, tunnel, pair, convergence)32 run: deno task test3334 - name: Compile self-contained binary35 run: deno task compile && dist/lofi-node --help >/dev/null 2>&1 || true3637 docker:38 runs-on: ubuntu-latest39 steps:40 - uses: actions/checkout@v44142 - name: Build image43 run: docker build -t lofi-node:ci .4445 - name: Container smoke — init, start, health, mesh up, ticket issue46 run: |47 docker volume create smoke48 docker run --rm -v smoke:/data lofi-node:ci \49 init --dir /data --port 4802 --public-url http://127.0.0.1:480250 docker run -d --name smoke -p 4802:4802 -v smoke:/data lofi-node:ci51 for i in $(seq 1 30); do52 curl -fsS http://127.0.0.1:4802/health >/dev/null 2>&1 && break53 sleep 254 done55 curl -fsS http://127.0.0.1:4802/health56 docker logs smoke57 # The native transport must come up inside the container; a LAN-only58 # fallback here is a packaging regression, not an acceptable state.59 docker logs smoke 2>&1 | grep -q "mesh: up"60 docker exec smoke lofi-node ticket issue --dir /data --label ci \61 | grep -q "lofisync1\."62 docker rm -f smoke