ci(e2e): readiness-wait перед API-сьюитами на стенде
После 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:
@@ -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=()
|
||||||
|
|||||||
Reference in New Issue
Block a user