From 73fba6832093e843194ba181661aec26be7591af Mon Sep 17 00:00:00 2001 From: DocFast Bot Date: Tue, 17 Feb 2026 11:51:36 +0000 Subject: [PATCH] ops: add post-deploy verification script and add to CI/CD workflow - scripts/verify-deploy.sh: checks container health, /health endpoint, and Stripe checkout - .forgejo/workflows/deploy.yml: runs verify-deploy.sh after successful deploy --- .forgejo/workflows/deploy.yml | 4 ++++ scripts/verify-deploy.sh | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 scripts/verify-deploy.sh diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 61efbb4..4d39b30 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -85,6 +85,10 @@ jobs: sleep 5 done + # Run post-deploy verification + echo "๐Ÿ” Running post-deploy verification..." + bash scripts/verify-deploy.sh + # Cleanup old rollback images (keep last 5) echo "๐Ÿงน Cleaning up old rollback images..." docker images --format "table {{.Repository}}:{{.Tag}}" | grep "docfast-docfast:rollback-" | tail -n +6 | awk '{print $1":"$2}' | xargs -r docker rmi || true diff --git a/scripts/verify-deploy.sh b/scripts/verify-deploy.sh new file mode 100755 index 0000000..2059bd2 --- /dev/null +++ b/scripts/verify-deploy.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Post-deploy verification for DocFast +set -e + +echo "โณ Waiting for container to be healthy..." +for i in $(seq 1 30); do + STATUS=$(docker inspect --format='{{.State.Health.Status}}' docfast-docfast-1 2>/dev/null || echo "not found") + if [ "$STATUS" = "healthy" ]; then + echo "โœ… Container healthy" + break + fi + if [ $i -eq 30 ]; then + echo "โŒ Container not healthy after 30s" + exit 1 + fi + sleep 1 +done + +echo "๐Ÿ” Checking health endpoint..." +HEALTH=$(curl -sf http://localhost:3100/health | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['status'])" 2>/dev/null) +if [ "$HEALTH" != "ok" ]; then + echo "โŒ Health check failed" + exit 1 +fi +echo "โœ… Health OK" + +echo "๐Ÿ” Checking Stripe checkout..." +CHECKOUT=$(curl -sf -X POST http://localhost:3100/v1/billing/checkout -H "Content-Type: application/json" 2>&1) +if echo "$CHECKOUT" | grep -q '"url"'; then + echo "โœ… Stripe checkout working" +elif echo "$CHECKOUT" | grep -q 'STRIPE_SECRET_KEY'; then + echo "โŒ STRIPE_SECRET_KEY not configured!" + exit 1 +else + echo "โš ๏ธ Checkout returned: $CHECKOUT" +fi + +echo "" +echo "๐ŸŽ‰ Deploy verification passed!"