Skip to content
146 changes: 144 additions & 2 deletions eng/pipelines/pr-validation-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,23 @@
fi
sleep 2
done

# One last probe: the loop sleeps after its final attempt, so SQL can
# become reachable in that window and would otherwise be missed.
if docker exec sqlserver \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost -U SA -P "$DB_PASSWORD" \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-C -Q "SELECT 1"; then
echo "[sql] SQL Server is ready."
return 0
fi

# sqlcmd only reports that the client could not connect. When the
# container itself exited (bad password policy, EULA, OOM, port clash)
# the reason is in the container's own log, so surface it here.
echo "[sql] SQL Server did not become ready in time." >&2
echo "[sql] ---- docker logs sqlserver (last 200 lines) ----" >&2
docker logs --tail 200 sqlserver >&2 || true
return 1
}

Expand Down Expand Up @@ -768,6 +784,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-$(distroName) \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -776,11 +793,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-$(distroName) \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-$(distroName) (last 200 lines) ----"
docker logs --tail 200 sqlserver-$(distroName) || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-$(distroName) \
Expand Down Expand Up @@ -1097,6 +1131,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-$(distroName)-$(archName) \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -1105,11 +1140,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-$(distroName)-$(archName) \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-$(distroName)-$(archName) (last 200 lines) ----"
docker logs --tail 200 sqlserver-$(distroName)-$(archName) || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-$(distroName)-$(archName) \
Expand Down Expand Up @@ -1327,6 +1379,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-rhel9 \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -1335,11 +1388,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-rhel9 \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-rhel9 (last 200 lines) ----"
docker logs --tail 200 sqlserver-rhel9 || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-rhel9 \
Expand Down Expand Up @@ -1554,6 +1624,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-rhel9-arm64 \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -1562,11 +1633,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-rhel9-arm64 \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-rhel9-arm64 (last 200 lines) ----"
docker logs --tail 200 sqlserver-rhel9-arm64 || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-rhel9-arm64 \
Expand Down Expand Up @@ -1785,6 +1873,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-alpine \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -1793,11 +1882,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-alpine \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-alpine (last 200 lines) ----"
docker logs --tail 200 sqlserver-alpine || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-alpine \
Expand Down Expand Up @@ -2041,6 +2147,7 @@

# Wait for SQL Server to be ready
echo "Waiting for SQL Server to start..."
sql_ready=false
for i in {1..60}; do
if docker exec sqlserver-alpine-arm64 \
/opt/mssql-tools18/bin/sqlcmd \
Expand All @@ -2049,11 +2156,28 @@
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
sql_ready=true
break
fi
echo "Waiting... ($i/60)"
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if docker exec sqlserver-alpine-arm64 \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" >/dev/null 2>&1; then
echo "SQL Server is ready!"
else
echo "SQL Server did not become ready after 60 attempts"
echo "---- docker logs sqlserver-alpine-arm64 (last 200 lines) ----"
docker logs --tail 200 sqlserver-alpine-arm64 || true
exit 1
fi
fi

# Create test database
docker exec sqlserver-alpine-arm64 \
Expand Down Expand Up @@ -2510,15 +2634,33 @@
-d mcr.microsoft.com/mssql/server:2022-latest

# Wait until SQL Server is ready
sql_ready=false
for i in {1..30}; do
docker exec sqlserver \
if docker exec sqlserver \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1" && break
-C -Q "SELECT 1"; then
sql_ready=true
break
fi
sleep 2
done
if [ "$sql_ready" != true ]; then
# the loop sleeps after its final attempt, so probe once more
if ! docker exec sqlserver \
/opt/mssql-tools18/bin/sqlcmd \
-S localhost \
Comment thread
bewithgaurav marked this conversation as resolved.
Dismissed
-U SA \
-P "$(DB_PASSWORD)" \
-C -Q "SELECT 1"; then
echo "SQL Server did not become ready after 30 attempts"
echo "---- docker logs sqlserver (last 200 lines) ----"
docker logs --tail 200 sqlserver || true
exit 1
fi
fi
displayName: 'Start SQL Server container'
env:
DB_PASSWORD: $(DB_PASSWORD)
Expand Down
Loading