Add a Docker channel for the relay + cli media matrix#7
Conversation
Docker Hub (moqdev/moq-relay, moqdev/moq-cli) is a published install channel for the relay and CLI, but the media matrix only ever ran the cargo/brew/apt/nix binaries. Add a `docker` channel: smoke.sh stays as-is and points RELAY_BIN/MOQ_BIN at two wrapper scripts (clients/docker/) that `docker run --network host` the published images. Host networking lets the containerised relay bind the ports the orchestrator and the cli containers reach on 127.0.0.1, so the committed smoke.toml works unchanged -- and since the other language clients still install from their own registries, the run also proves the Docker relay routes between every implementation. Linux-only (--network host needs a native daemon; GitHub's macOS runners have none). Runtime is overridable (SMOKE_DOCKER=podman), as are the images (MOQ_RELAY_IMAGE / MOQ_CLI_IMAGE). CI adds an ubuntu `docker` matrix cell that pulls both images :latest and sets the wrappers; freshness asserts the images stay unpinned + pulled fresh. Verified locally with podman: the moqdev/moq-relay container routes a host-ffmpeg | moqdev/moq-cli publisher to a moqdev/moq-cli subscriber end-to-end (a frame's bytes arrive). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 31 minutes and 24 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
Docker Hub publishes
moqdev/moq-relayandmoqdev/moq-cli— a first-class install channel (documented asdocker pull moqdev/…in their READMEs) — but the media matrix only ever ran the cargo/brew/apt/nix binaries. This adds Docker as a fifth channel. (Complements therust-dockertoken cell already onmain.)What
smoke.shis unchanged. Thedockerchannel just pointsRELAY_BIN/MOQ_BINat two wrapper scripts inclients/docker/thatdocker run --network hostthe published images:clients/docker/moq-relay— bind-mounts the config dir, host networking so the relay binds the ports the orchestrator (curl 127.0.0.1) and the cli containers reach.clients/docker/moq-cli— host networking +-iso the publisher can pipe ffmpeg's Annex-B tomoq publishover stdin.Because host networking makes the containerised relay bind the host's
127.0.0.1, the committedsmoke.tomlworks unchanged. And since the other language clients (python/go/swift/kotlin/c/js/gst) still install from their own registries, this run also proves the Docker relay routes between every implementation, and the Dockermoq-clipublishes/subscribes against them.ubuntu-latest / dockermatrix cell pulls both images:latestand sets the wrappers. Linux-only —--network hostneeds a native Docker daemon, which GitHub's macOS runners (and Docker Desktop / podman-machine VMs) don't provide.:latest) and CI pulls them fresh.SMOKE_DOCKER=podman,MOQ_RELAY_IMAGE,MOQ_CLI_IMAGE.Validation
Verified locally with podman: the
moqdev/moq-relaycontainer routes ahost-ffmpeg | moqdev/moq-cli publishpublisher to amoqdev/moq-cli subscribesubscriber end-to-end — a frame's bytes arrive (n=1), the same bar as every other cell. (The host-orchestrator readiness poll can't reach a podman-VM container on macOS, so the fullsmoke.shintegration is validated by the Linux CI cell; the image interop above is the substantive part.)shellcheck (wrappers) + shfmt + actionlint clean; freshness passes.
🤖 Generated with Claude Code