Add automated deployment script with VPN connection and Docker rebuild
This commit is contained in:
parent
107f2de66c
commit
1d63dfddef
1 changed files with 120 additions and 0 deletions
120
deploy.sh
Executable file
120
deploy.sh
Executable file
|
|
@ -0,0 +1,120 @@
|
|||
#!/bin/bash
|
||||
|
||||
# DeafGain Website - Automated Deployment Script
|
||||
# Handles VPN connection and Docker deployment to production server
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
VPN_CONFIG="$HOME/wg1.conf"
|
||||
PRODUCTION_SERVER="10.4.0.205"
|
||||
SSH_USER="chaulmark"
|
||||
PROJECT_PATH="/home/chaulmark/websites/deafgain.org"
|
||||
|
||||
echo -e "${BLUE}=================================================${NC}"
|
||||
echo -e "${BLUE}🚀 DeafGain Website Deployment${NC}"
|
||||
echo -e "${BLUE}=================================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Function to check if VPN is connected
|
||||
is_vpn_connected() {
|
||||
sudo wg show interfaces 2>/dev/null | grep -q "wg1"
|
||||
}
|
||||
|
||||
# Function to connect VPN
|
||||
connect_vpn() {
|
||||
echo -e "${YELLOW}🔄 Connecting to VPN...${NC}"
|
||||
|
||||
if ! [ -f "$VPN_CONFIG" ]; then
|
||||
echo -e "${RED}❌ VPN config not found: $VPN_CONFIG${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run wg-quick and capture output
|
||||
result=$(sudo wg-quick up "$VPN_CONFIG" 2>&1) || true
|
||||
|
||||
# Check if already exists (already connected)
|
||||
if echo "$result" | grep -q "already exists"; then
|
||||
echo -e "${GREEN}✅ VPN already connected${NC}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check if connection was successful (look for success indicators)
|
||||
if echo "$result" | grep -q "Backgrounding route monitor" || is_vpn_connected; then
|
||||
echo -e "${GREEN}✅ VPN connected successfully${NC}"
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}❌ Failed to connect VPN:${NC}"
|
||||
echo "$result"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to test connectivity
|
||||
test_connectivity() {
|
||||
echo -e "${YELLOW}🔍 Testing connectivity to production server...${NC}"
|
||||
|
||||
if ping -c 1 -W 2 $PRODUCTION_SERVER >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ Production server ($PRODUCTION_SERVER) is reachable${NC}"
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}❌ Cannot reach production server ($PRODUCTION_SERVER)${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to deploy
|
||||
deploy_to_production() {
|
||||
echo -e "${YELLOW}🚀 Deploying to production server...${NC}"
|
||||
echo ""
|
||||
|
||||
ssh $SSH_USER@$PRODUCTION_SERVER "cd $PROJECT_PATH && echo '📥 Pulling latest changes...' && git pull && echo '' && echo '🔨 Rebuilding and restarting Docker containers...' && docker compose up --build -d && echo '' && echo '✅ Deployment complete!'"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ""
|
||||
echo -e "${GREEN}=================================================${NC}"
|
||||
echo -e "${GREEN}✅ Deployment Successful!${NC}"
|
||||
echo -e "${GREEN}=================================================${NC}"
|
||||
echo -e "${GREEN}🌐 Website: https://deafgain.org/${NC}"
|
||||
return 0
|
||||
else
|
||||
echo ""
|
||||
echo -e "${RED}=================================================${NC}"
|
||||
echo -e "${RED}❌ Deployment Failed${NC}"
|
||||
echo -e "${RED}=================================================${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Main deployment flow
|
||||
main() {
|
||||
# Step 1: Check/Connect VPN
|
||||
if is_vpn_connected; then
|
||||
echo -e "${GREEN}✅ VPN already connected${NC}"
|
||||
else
|
||||
connect_vpn
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Step 2: Test connectivity
|
||||
if ! test_connectivity; then
|
||||
echo -e "${RED}❌ Cannot proceed with deployment - server unreachable${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Step 3: Deploy
|
||||
deploy_to_production
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main
|
||||
Loading…
Add table
Reference in a new issue