ci: centralize public admin smoke checks
TaxBaik CI/CD / build-and-deploy (push) Failing after 10m29s
TaxBaik CI/CD / build-and-deploy (push) Failing after 10m29s
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_URL="${ROOT_URL:-https://www.taxbaik.com/}"
|
||||
ADMIN_URL="${ADMIN_URL:-https://www.taxbaik.com/taxbaik/admin/login}"
|
||||
PUBLIC_MARKER="${PUBLIC_MARKER:-백원숙 세무회계}"
|
||||
PUBLIC_FORBIDDEN="${PUBLIC_FORBIDDEN:-관리자}"
|
||||
ADMIN_MARKER="${ADMIN_MARKER:-TaxBaik Admin}"
|
||||
MAX_RETRIES="${MAX_RETRIES:-3}"
|
||||
RETRY_SLEEP_SECONDS="${RETRY_SLEEP_SECONDS:-5}"
|
||||
|
||||
check_page() {
|
||||
local url="$1"
|
||||
local allow_redirect="${2:-0}"
|
||||
local must_contain="${3:-}"
|
||||
local must_not_contain="${4:-}"
|
||||
local status
|
||||
local body
|
||||
|
||||
body=$(curl -fsSL --max-time 15 "$url" 2>/dev/null || true)
|
||||
status=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 "$url" || echo "000")
|
||||
|
||||
if [ "$allow_redirect" = "1" ]; then
|
||||
if ! printf '%s' "$status" | grep -Eq '^(200|301|302|303|307|308)$'; then
|
||||
echo " ✗ $url -> HTTP $status" >&2
|
||||
return 1
|
||||
fi
|
||||
elif [ "$status" != "200" ]; then
|
||||
echo " ✗ $url -> HTTP $status" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -n "$must_contain" ] && ! printf '%s' "$body" | grep -q "$must_contain"; then
|
||||
echo " ✗ $url -> body missing required marker: $must_contain" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -n "$must_not_contain" ] && printf '%s' "$body" | grep -q "$must_not_contain"; then
|
||||
echo " ✗ $url -> body contains forbidden marker: $must_not_contain" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo " ✓ $url -> HTTP $status"
|
||||
}
|
||||
|
||||
for i in $(seq 1 "$MAX_RETRIES"); do
|
||||
if check_page "$ROOT_URL" 1 "$PUBLIC_MARKER" "$PUBLIC_FORBIDDEN" \
|
||||
&& check_page "${ROOT_URL%/}/taxbaik/" 1 "$PUBLIC_MARKER" "$PUBLIC_FORBIDDEN" \
|
||||
&& check_page "$ADMIN_URL" 0 "$ADMIN_MARKER" ""; then
|
||||
echo "✓ public/admin smoke passed"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$i" -lt "$MAX_RETRIES" ]; then
|
||||
echo " retrying... ($i/$MAX_RETRIES)"
|
||||
sleep "$RETRY_SLEEP_SECONDS"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✗ smoke verification failed" >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user