Adds the smoke job to .github/workflows/ci.yml, gated on image-build. Runs deploy/smoke/allinone_smoke.py against the freshly-built rutster-allinone:smoke image: * Boots the all-in-one container with RUTSTER_LOCAL_CERTS=true (Caddy internal CA, no ACME in CI per spec §9). * Extracts Caddy's internal-CA root cert from /data/caddy/pki/ authorities/local/root.crt via docker cp. * Opens wss:// WS to /twilio/media-stream using the extracted root (Python stdlib ssl + socket — no pip install required, CI runner- image ships Python 3 + ssl). * Sends Twilio's connected+start handshake frames (the same JSON sequence crates/rutster-trunk/tests/ws_ping.rs uses). * Streams 200 PCM-zeroed frames at 20ms cadence as Twilio Media events. * Asserts the engine replies with at least one text frame — proving the real edge->FOB WS path works end-to-end through TLS. The compose smoke + reload-during-call smoke (Task 9) gate on this job. Signed-off-by: Aaron D. Lee <himself@adlee.work>
12 KiB
12 KiB