From 52d7118c33267822b5838a55d79ec9a05559fe6b Mon Sep 17 00:00:00 2001 From: adlee-was-taken Date: Tue, 7 Apr 2026 20:37:36 -0400 Subject: [PATCH] Add favicon and prod deploy script Co-Authored-By: Claude Opus 4.6 (1M context) --- client/index.html | 1 + scripts/deploy-prod.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 scripts/deploy-prod.sh diff --git a/client/index.html b/client/index.html index f52e07c..8af551f 100644 --- a/client/index.html +++ b/client/index.html @@ -4,6 +4,7 @@ Golf Card Game + diff --git a/scripts/deploy-prod.sh b/scripts/deploy-prod.sh new file mode 100755 index 0000000..f076989 --- /dev/null +++ b/scripts/deploy-prod.sh @@ -0,0 +1,42 @@ +#!/bin/bash +set -e + +TAG="${1:?Usage: deploy-prod.sh (e.g. v3.3.2)}" +DROPLET="root@165.245.152.51" +IMAGE="git.adlee.work/alee/golfgame" + +echo "Deploying $TAG to production ($DROPLET)..." + +ssh $DROPLET bash -s "$TAG" "$IMAGE" <<'REMOTE' +set -e +TAG="$1" +IMAGE="$2" + +cd /opt/golfgame + +# Pull the image that passed staging +docker pull "$IMAGE:$TAG" +docker tag "$IMAGE:$TAG" golfgame-app:latest + +# Update code for compose/env changes +git fetch origin +git checkout "$TAG" + +# Restart app +docker compose -f docker-compose.prod.yml up -d app + +# Wait for healthy +echo "Waiting for health check..." +for i in $(seq 1 30); do + if docker compose -f docker-compose.prod.yml ps app | grep -q "healthy"; then + echo "Production deploy successful — $TAG" + exit 0 + fi + sleep 2 +done +echo "CRITICAL: app not healthy after 60s" +docker compose -f docker-compose.prod.yml logs --tail=30 app +exit 1 +REMOTE + +echo "Done."