Skip to content

Commit 5ee700f

Browse files
dmornclaude
andcommitted
ci(integration): poll relay readiness instead of fixed sleep
Replace sleep 1 with a 30s log-based readiness probe, dump relay logs on failure, and document why GitHub Actions services: cannot be used here (service containers start before checkout, so they cannot mount the repo-generated TLS certs). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7146666 commit 5ee700f

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

.github/workflows/ci.yml

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ jobs:
5656
run: mix ci
5757

5858
relay-integration:
59+
# The moqtail relay needs TLS cert/key files produced by
60+
# scripts/generate_integration_certs.sh. GitHub Actions `services:`
61+
# containers start before `actions/checkout` runs, so they cannot mount
62+
# repo-generated files — hence we start the relay manually as a step
63+
# after checkout + cert generation. See also: host networking is used
64+
# to side-step UDP/QUIC port-mapping quirks on the runner.
5965
name: relay-backed integration tests
6066
runs-on: ubuntu-latest
6167

@@ -107,13 +113,35 @@ jobs:
107113
"$MOQX_RELAY_IMAGE" \
108114
--host 0.0.0.0 --port 4433 --cert-file /certs/cert.pem --key-file /certs/key.pem
109115
116+
- name: Wait for relay to be ready
117+
run: |
118+
for i in $(seq 1 30); do
119+
if ! docker ps --filter name=moqx-relay --filter status=running \
120+
--format '{{.Names}}' | grep -q '^moqx-relay$'; then
121+
echo "relay container is not running"
122+
docker logs moqx-relay || true
123+
exit 1
124+
fi
125+
if docker logs moqx-relay 2>&1 \
126+
| grep -qiE 'listen|ready|bound|started|serving'; then
127+
echo "relay ready after ${i}s"
128+
exit 0
129+
fi
130+
sleep 1
131+
done
132+
echo "relay did not report readiness within 30s; last logs:"
133+
docker logs moqx-relay || true
134+
exit 1
135+
110136
- name: Run relay-backed integration tests
111137
env:
112138
MOQX_EXTERNAL_RELAY_URL: https://127.0.0.1:4433
113139
MOQX_RELAY_CACERTFILE: .tmp/integration-certs/ca.pem
114-
run: |
115-
sleep 1
116-
mix test.integration
140+
run: mix test.integration
141+
142+
- name: Dump relay logs on failure
143+
if: failure()
144+
run: docker logs moqx-relay || true
117145

118146
- name: Stop relay image
119147
if: always()

0 commit comments

Comments
 (0)