fix(ci): probe runtime backend from inside container
All checks were successful
CICD Start / Sanity and Base Decision (push) Successful in 21s
CICD Start / Sanity and Base Decision (pull_request) Successful in 1m0s

This commit is contained in:
copilotcoder
2026-07-05 21:49:29 -04:00
parent ac0bd9d9d8
commit 3deeee0dcb

View File

@@ -321,6 +321,43 @@ jobs:
DB_PASSWORD="plex_password"
DB_URL="postgresql://plex_user:${DB_PASSWORD}@${DB_CONTAINER}:5432/plex_playlist"
fetch_backend_endpoint() {
endpoint_path="$1"
output_file="$2"
probe_tmp="$(mktemp)"
if ! docker exec "${BACKEND_CONTAINER}" python -c "$(printf '%s\n' \
'import sys' \
'import urllib.error' \
'import urllib.request' \
'endpoint_path = sys.argv[1]' \
'url = f"http://127.0.0.1:8000{endpoint_path}"' \
'try:' \
' with urllib.request.urlopen(url, timeout=2) as response:' \
' body = response.read().decode("utf-8", errors="replace")' \
' print(response.status)' \
' print(body)' \
'except urllib.error.HTTPError as err:' \
' body = err.read().decode("utf-8", errors="replace")' \
' print(err.code)' \
' print(body)' \
'except Exception:' \
' print("000")' \
' print("")'
)" "${endpoint_path}" >"${probe_tmp}" 2>/dev/null
then
: >"${output_file}"
rm -f "${probe_tmp}"
echo "000"
return 0
fi
http_code="$(head -n 1 "${probe_tmp}")"
tail -n +2 "${probe_tmp}" >"${output_file}"
rm -f "${probe_tmp}"
echo "${http_code}"
}
dump_failure_context() {
echo "=== Runtime Integration Failure Context ==="
docker ps -a || true
@@ -417,7 +454,7 @@ jobs:
exit 1
fi
health_code="$(curl -sS -o /tmp/blackbox-health.json -w "%{http_code}" "http://127.0.0.1:18000/health" || true)"
health_code="$(fetch_backend_endpoint "/health" /tmp/blackbox-health.json)"
if [ "${health_code}" = "200" ]; then
backend_ready=true
break
@@ -431,7 +468,7 @@ jobs:
exit 1
fi
root_code="$(curl -sS -o /tmp/blackbox-root.json -w "%{http_code}" "http://127.0.0.1:18000/" || true)"
root_code="$(fetch_backend_endpoint "/" /tmp/blackbox-root.json)"
if [ "${root_code}" != "200" ] || ! grep -q 'Plex Playlist Backend API' /tmp/blackbox-root.json; then
echo "❌ Root endpoint validation failed"
cat /tmp/blackbox-root.json 2>/dev/null || true
@@ -439,7 +476,7 @@ jobs:
exit 1
fi
compatibility_code="$(curl -sS -o /tmp/blackbox-compatibility.json -w "%{http_code}" "http://127.0.0.1:18000/compatibility" || true)"
compatibility_code="$(fetch_backend_endpoint "/compatibility" /tmp/blackbox-compatibility.json)"
if [ "${compatibility_code}" != "200" ] || ! grep -q '"ok":true' /tmp/blackbox-compatibility.json; then
echo "❌ Compatibility endpoint validation failed"
cat /tmp/blackbox-compatibility.json 2>/dev/null || true
@@ -447,7 +484,7 @@ jobs:
exit 1
fi
health_code="$(curl -sS -o /tmp/blackbox-health.json -w "%{http_code}" "http://127.0.0.1:18000/health" || true)"
health_code="$(fetch_backend_endpoint "/health" /tmp/blackbox-health.json)"
if [ "${health_code}" != "200" ] || ! grep -q '"status":"healthy"' /tmp/blackbox-health.json; then
echo "❌ Health endpoint validation failed"
cat /tmp/blackbox-health.json 2>/dev/null || true