43 lines
1.1 KiB
Bash
Executable file
43 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Block until the deployed site is serving the commit at local HEAD.
|
|
#
|
|
# git push && bin/wait-deploy
|
|
#
|
|
# Works from any machine — it only reads the public /api/version endpoint, so
|
|
# no Coolify token and no SSH tunnel are needed.
|
|
set -uo pipefail
|
|
|
|
URL=${URL:-https://chart.amow.com}
|
|
TIMEOUT=${TIMEOUT:-300}
|
|
|
|
want=$(git rev-parse HEAD) || exit 1
|
|
short=${want:0:8}
|
|
|
|
echo "waiting for $URL to serve $short (timeout ${TIMEOUT}s)"
|
|
|
|
start=$(date +%s)
|
|
last=""
|
|
while :; do
|
|
now=$(date +%s)
|
|
elapsed=$(( now - start ))
|
|
if [ "$elapsed" -ge "$TIMEOUT" ]; then
|
|
echo "TIMEOUT after ${elapsed}s — still serving ${last:-unknown}"
|
|
echo "check the build log: https://chart.amow.com is fine but Coolify may have failed"
|
|
exit 1
|
|
fi
|
|
|
|
# 502 during the rolling container swap is normal; keep polling.
|
|
got=$(curl -fsS -m 5 "$URL/api/version" 2>/dev/null \
|
|
| sed -n 's/.*"commit"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')
|
|
|
|
if [ "$got" = "$want" ]; then
|
|
echo "deployed ${short} after ${elapsed}s"
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$got" != "$last" ]; then
|
|
echo " ${elapsed}s: serving ${got:-unreachable}"
|
|
last="$got"
|
|
fi
|
|
sleep 3
|
|
done
|