ci(e2e): readiness-wait перед API-сьюитами на стенде
CI / test (push) Successful in 7m38s
CI / deploy-ift (push) Successful in 3m37s
CI / e2e-ift (push) Successful in 1m19s
CI / deploy-stage (push) Successful in 2m47s
CI / e2e-stage (push) Failing after 1m15s

После deploy-stage контейнер ещё стартует, traefik отвечает 502/503,
и первые сьюиты падали с {badmatch,{ok,502}}. run-stand-api-tests.sh
теперь до 150s ждёт, пока HTTP-фронт API_HOST/ADMIN_API_HOST начнёт
отвечать (любой код, кроме 5xx), прежде чем запускать CT.
This commit is contained in:
2026-08-23 23:17:32 +03:00
parent 9348c36e52
commit a061674408
+21
View File
@@ -51,6 +51,27 @@ echo " ADMIN_API_HOST=${ADMIN_API_HOST}"
echo " WS_HOST=${WS_HOST}" echo " WS_HOST=${WS_HOST}"
echo " ADMIN_WS_HOST=${ADMIN_WS_HOST}" echo " ADMIN_WS_HOST=${ADMIN_WS_HOST}"
# После deploy-stage контейнер стенда может ещё стартовать; traefik в
# это время отвечает 502/503, и первые сьюиты падают с {badmatch,{ok,502}}.
# Ждём, пока HTTP-фронт приложений начнёт отвечать (любой код, кроме 5xx).
for probe in "${API_HOST}/v1/calendars" "${ADMIN_API_HOST}/v1/admin/health"; do
ready=0
for i in $(seq 1 30); do
code=$(curl -sS -o /dev/null -w '%{http_code}' --max-time 5 "${probe}" 2>/dev/null || echo 000)
case "${code}" in
5*) : ;;
000) : ;;
*) ready=1; break ;;
esac
sleep 5
done
if [[ "${ready}" -eq 1 ]]; then
echo " readiness OK: ${probe} (HTTP ${code})"
else
echo "::warning::${probe} не отвечает после 150s — стартуем сьюиты как есть"
fi
done
# Docker Desktop/WSL: --network=host часто НЕ наследует /etc/hosts стенда, # Docker Desktop/WSL: --network=host часто НЕ наследует /etc/hosts стенда,
# из‑за чего CT remote не резолвит *.ift.eventhub.local (health timeout 30s). # из‑за чего CT remote не резолвит *.ift.eventhub.local (health timeout 30s).
docker_add_hosts=() docker_add_hosts=()