diff --git a/scripts/deploy-frontend.sh b/scripts/deploy-frontend.sh new file mode 100755 index 0000000..fbbffef --- /dev/null +++ b/scripts/deploy-frontend.sh @@ -0,0 +1,131 @@ +#!/bin/bash +# ============================================================================= +# Frontend Staging Deployment Script +# ============================================================================= +# Usage: ./scripts/deploy-frontend.sh [--skip-build] +# +# Deploys a frontend site on sv-frontend via SSH. +# +# Sites: +# blogwoman - frontend.blogwoman.de +# porwoll - frontend.porwoll.de +# all - Deploy all frontends +# +# Examples: +# ./scripts/deploy-frontend.sh blogwoman +# ./scripts/deploy-frontend.sh porwoll --skip-build +# ./scripts/deploy-frontend.sh all +# ============================================================================= + +set -e + +# Colors +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +# Configuration +SSH_HOST="sv-frontend" +BRANCH="${DEPLOY_BRANCH:-develop}" + +# Parse arguments +SITE="$1" +SKIP_BUILD=false + +if [ -z "$SITE" ]; then + echo -e "${RED}Error: No site specified${NC}" + echo "Usage: $0 [--skip-build]" + exit 1 +fi + +for arg in "${@:2}"; do + case $arg in + --skip-build) + SKIP_BUILD=true + ;; + esac +done + +# Map site to directory +get_project_dir() { + case "$1" in + blogwoman) echo "frontend.blogwoman.de" ;; + porwoll) echo "frontend.porwoll.de" ;; + *) + echo -e "${RED}Unknown site: $1${NC}" >&2 + echo "Available: blogwoman, porwoll" >&2 + return 1 + ;; + esac +} + +# Deploy a single frontend +deploy_site() { + local site="$1" + local project_dir + project_dir=$(get_project_dir "$site") || exit 1 + + echo "" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${BLUE} Deploying: ${GREEN}$site${BLUE} ($project_dir)${NC}" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + + # Test SSH connection + if ! ssh -o ConnectTimeout=5 "$SSH_HOST" "echo ok" > /dev/null 2>&1; then + echo -e "${RED}Cannot connect to $SSH_HOST${NC}" + exit 1 + fi + + # Deploy via SSH + ssh "$SSH_HOST" bash -s </dev/null + + echo -e "${GREEN} ✓ $site deployed successfully${NC}" +} + +# Main +echo "==============================================" +echo " Frontend Staging Deployment" +echo " Target: sv-frontend ($SSH_HOST)" +echo " Branch: $BRANCH" +echo "==============================================" + +if [ "$SITE" = "all" ]; then + deploy_site "blogwoman" + deploy_site "porwoll" +else + deploy_site "$SITE" +fi + +echo "" +echo "==============================================" +echo -e "${GREEN} Deployment Complete!${NC}" +echo "==============================================" +echo " Time: $(date)" +echo "=============================================="