Update test.sh
Some checks failed
Build-Test-Publish / build (linux/amd64) (push) Failing after 3m15s
Build-Test-Publish / build (linux/arm64) (push) Failing after 3m16s

This commit is contained in:
Your Name
2025-08-24 11:17:15 +12:00
parent 834e88af46
commit 43b576805e

41
test.sh
View File

@@ -193,6 +193,12 @@ function start_test_server() {
log_info "Container IP address: ${CONTAINER_IP}"
fi
# Try to get the Docker host IP (gateway) for Docker-in-Docker
HOST_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' "${CONTAINER_NAME}")
if [ -n "${HOST_IP}" ]; then
log_info "Docker host IP (gateway): ${HOST_IP}"
fi
# Check if container is still running
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
log_error "Container stopped unexpectedly. Logs:"
@@ -213,22 +219,31 @@ function start_test_server() {
local attempt=0
while [ $attempt -lt $max_attempts ]; do
# Try container IP first (for Docker-in-Docker), then localhost with mapped port
# Try multiple connection methods for different environments
local http_code="000"
local test_urls=""
# Try direct container IP on port 80 (works in Docker-in-Docker)
# Try direct container IP on port 80 (might work in some Docker setups)
if [ "${CONTAINER_IP}" != "localhost" ]; then
http_code=$(curl -s --max-time 2 -o /dev/null -w "%{http_code}" "http://${CONTAINER_IP}:80/" 2>/dev/null || echo "000")
test_urls="${CONTAINER_IP}:80"
fi
# If that didn't work, try localhost with mapped port
# If that didn't work, try host IP with mapped port (Docker-in-Docker)
if [ "$http_code" = "000" ] && [ -n "${HOST_IP}" ]; then
http_code=$(curl -s --max-time 2 -o /dev/null -w "%{http_code}" "http://${HOST_IP}:${TEST_PORT}/" 2>/dev/null || echo "000")
test_urls="${test_urls}, host:${HOST_IP}:${TEST_PORT}"
fi
# If that didn't work, try localhost with mapped port (local Docker)
if [ "$http_code" = "000" ]; then
http_code=$(curl -s --max-time 2 -o /dev/null -w "%{http_code}" "http://localhost:${TEST_PORT}/" 2>/dev/null || echo "000")
test_urls="${test_urls}, localhost:${TEST_PORT}"
fi
# Debug: Show HTTP code and container status on first few attempts
if [ $attempt -lt 3 ]; then
log_info "Health check attempt $((attempt + 1)): HTTP code ${http_code} (IP: ${CONTAINER_IP}:80, localhost:${TEST_PORT})"
log_info "Health check attempt $((attempt + 1)): HTTP code ${http_code} (tried: ${test_urls})"
# Check if container is actually running
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
log_info "Container is running, checking logs..."
@@ -240,18 +255,16 @@ function start_test_server() {
if [ "$http_code" = "200" ] || [ "$http_code" = "204" ] || [ "$http_code" = "404" ]; then
log_info "Server is ready! (HTTP ${http_code})"
# Set which connection method works for later use
if [ "${CONTAINER_IP}" != "localhost" ]; then
# Test which one actually worked
if curl -s --max-time 1 -o /dev/null "http://${CONTAINER_IP}:80/" 2>/dev/null; then
export SOS_TEST_HOST="${CONTAINER_IP}:80"
log_info "Using container IP: ${SOS_TEST_HOST}"
else
export SOS_TEST_HOST="localhost:${TEST_PORT}"
log_info "Using localhost: ${SOS_TEST_HOST}"
fi
# Determine which connection method worked
if curl -s --max-time 1 -o /dev/null "http://${CONTAINER_IP}:80/" 2>/dev/null; then
export SOS_TEST_HOST="${CONTAINER_IP}:80"
log_info "Using container IP: ${SOS_TEST_HOST}"
elif [ -n "${HOST_IP}" ] && curl -s --max-time 1 -o /dev/null "http://${HOST_IP}:${TEST_PORT}/" 2>/dev/null; then
export SOS_TEST_HOST="${HOST_IP}:${TEST_PORT}"
log_info "Using host IP: ${SOS_TEST_HOST}"
else
export SOS_TEST_HOST="localhost:${TEST_PORT}"
log_info "Using localhost: ${SOS_TEST_HOST}"
fi
return 0
fi