Initial commit
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
# Deploy script for GamerComp.com
|
||||
# Usage: ./deploy.sh [--clear-cloudflare]
|
||||
#
|
||||
# Cache clearing order (correct sequence):
|
||||
# 1. Cloudflare CDN (if --clear-cloudflare) - Clear edge servers first
|
||||
# 2. Build new frontend assets (with new hashed filenames)
|
||||
# 3. Restart backend API
|
||||
# 4. Reload nginx (picks up new files)
|
||||
# 5. Clean old artifacts
|
||||
# 6. Users clear browser cache via /clear-cache.html
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo " GamerComp.com Deploy Script"
|
||||
echo "=========================================="
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Navigate to project root
|
||||
cd /home/gamearc/game-arcade
|
||||
|
||||
# Load environment variables (for Cloudflare credentials)
|
||||
if [[ -f backend/.env ]]; then
|
||||
export $(grep -E '^CLOUDFLARE_' backend/.env | xargs)
|
||||
fi
|
||||
|
||||
# Step 1: Clear Cloudflare cache FIRST (if requested and configured)
|
||||
# This ensures edge servers don't serve stale content during deploy
|
||||
if [[ "$1" == "--clear-cloudflare" ]]; then
|
||||
if [[ -n "$CLOUDFLARE_ZONE_ID" && -n "$CLOUDFLARE_API_TOKEN" ]]; then
|
||||
echo -e "${YELLOW}Step 1: Clearing Cloudflare cache (before deploy)...${NC}"
|
||||
RESULT=$(curl -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"purge_everything":true}' \
|
||||
--silent)
|
||||
if echo "$RESULT" | jq -e '.success' > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}Cloudflare cache cleared!${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}Warning: Cloudflare purge may have failed${NC}"
|
||||
echo "$RESULT" | jq .
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}Step 1: Skipping Cloudflare - credentials not set${NC}"
|
||||
echo "To enable, add to ~/.bashrc:"
|
||||
echo " export CLOUDFLARE_ZONE_ID='your_zone_id'"
|
||||
echo " export CLOUDFLARE_API_TOKEN='your_api_token'"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}Step 1: Skipping Cloudflare (use --clear-cloudflare to purge CDN)${NC}"
|
||||
fi
|
||||
|
||||
# Step 2: Build frontend (creates new hashed filenames)
|
||||
echo -e "${YELLOW}Step 2: Building frontend...${NC}"
|
||||
cd frontend
|
||||
npm run build
|
||||
cd ..
|
||||
echo -e "${GREEN}Frontend built successfully!${NC}"
|
||||
|
||||
# Step 3: Restart backend
|
||||
echo -e "${YELLOW}Step 3: Restarting backend...${NC}"
|
||||
pm2 restart gamercomp-api
|
||||
echo -e "${GREEN}Backend restarted!${NC}"
|
||||
|
||||
# Step 4: Reload nginx (serves new files)
|
||||
echo -e "${YELLOW}Step 4: Reloading nginx...${NC}"
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
echo -e "${GREEN}Nginx reloaded!${NC}"
|
||||
|
||||
# Step 5: Clear old cached files
|
||||
echo -e "${YELLOW}Step 5: Cleaning up old build artifacts...${NC}"
|
||||
find /home/gamearc/game-arcade/frontend/dist/assets -name "*.js" -mtime +7 -delete 2>/dev/null || true
|
||||
find /home/gamearc/game-arcade/frontend/dist/assets -name "*.css" -mtime +7 -delete 2>/dev/null || true
|
||||
echo -e "${GREEN}Cleanup complete!${NC}"
|
||||
|
||||
# Step 6: Purge Cloudflare AGAIN after new files are live
|
||||
# This ensures CDN fetches the new hashed files
|
||||
if [[ "$1" == "--clear-cloudflare" && -n "$CLOUDFLARE_ZONE_ID" && -n "$CLOUDFLARE_API_TOKEN" ]]; then
|
||||
echo -e "${YELLOW}Step 6: Final Cloudflare purge (new files now live)...${NC}"
|
||||
curl -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"purge_everything":true}' \
|
||||
--silent > /dev/null
|
||||
echo -e "${GREEN}Cloudflare cache purged!${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo -e "${GREEN} Deploy Complete!${NC}"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Cache clearing order completed:"
|
||||
echo " 1. Cloudflare CDN purged (if --clear-cloudflare)"
|
||||
echo " 2. New frontend built with fresh hashed filenames"
|
||||
echo " 3. Backend restarted"
|
||||
echo " 4. Nginx reloaded"
|
||||
echo " 5. Old artifacts cleaned"
|
||||
if [[ "$1" == "--clear-cloudflare" ]]; then
|
||||
echo " 6. Final Cloudflare purge (ensures CDN has new files)"
|
||||
fi
|
||||
echo ""
|
||||
echo "For users to clear browser cache:"
|
||||
echo " • Visit /clear-cache.html"
|
||||
echo " • Or hard refresh: Ctrl+Shift+R (Win) / Cmd+Shift+R (Mac)"
|
||||
echo ""
|
||||
echo "Service worker auto-updates within seconds."
|
||||
Reference in New Issue
Block a user