cmc-sales/deploy/deploy-stg.sh

70 lines
2.3 KiB
Bash
Raw Normal View History

2025-07-23 03:00:06 -07:00
#!/bin/bash
# Deploy staging environment for cmc-sales
2025-07-23 03:17:47 -07:00
echo "Starting staging deployment for cmc-sales..."
2025-07-23 03:00:06 -07:00
# Variables (edit these as needed)
2025-07-23 03:17:47 -07:00
echo "Setting variables..."
2025-07-23 03:00:06 -07:00
SERVER="cmc"
2025-07-23 03:17:47 -07:00
REPO="git@code.springupsoftware.com:cmc/cmc-sales.git"
2025-07-23 03:00:06 -07:00
BRANCH="stg"
STAGING_DIR="cmc-sales-staging"
2025-07-23 03:17:47 -07:00
echo "Connecting to server $SERVER via SSH..."
# Pass variables into SSH session
ssh $SERVER \
"SERVER=$SERVER REPO='$REPO' BRANCH='$BRANCH' STAGING_DIR='$STAGING_DIR' bash -s" << 'ENDSSH'
2025-07-23 03:00:06 -07:00
set -e
2025-07-23 03:17:47 -07:00
echo "Connected to $SERVER."
2025-07-23 03:00:06 -07:00
# Clone or update staging branch
if [ -d "$STAGING_DIR" ]; then
2025-07-23 03:17:47 -07:00
echo "Updating existing staging directory $STAGING_DIR..."
2025-07-23 03:00:06 -07:00
cd "$STAGING_DIR"
git fetch origin
git checkout $BRANCH
git pull origin $BRANCH
else
2025-07-23 03:17:47 -07:00
echo "Cloning repository $REPO to $STAGING_DIR..."
2025-07-23 03:00:06 -07:00
git clone -b $BRANCH $REPO $STAGING_DIR
cd "$STAGING_DIR"
fi
# Create .env file for go-app if it doesn't exist
ENV_PATH="/home/cmc/$STAGING_DIR/go-app/.env"
if [ ! -f "$ENV_PATH" ]; then
2025-07-23 03:17:47 -07:00
echo "Creating .env file for go-app..."
2025-07-23 03:00:06 -07:00
cat > "$ENV_PATH" <<'ENVEOF'
# Environment variables for Go app mail configuration
SMTP_HOST="host.docker.internal"
SMTP_PORT=1025
SMTP_USER=""
SMTP_PASS=""
SMTP_FROM="CMC Sales <sales@cmctechnologies.com.au>"
ENVEOF
fi
2025-07-23 03:17:47 -07:00
echo "Starting docker compose for staging..."
2025-07-23 03:00:06 -07:00
# Start docker compose (edit file name if needed)
docker compose -f docker-compose.yml -f docker-compose.stg.yml up -d
2025-07-23 03:17:47 -07:00
echo "Checking running containers..."
2025-07-23 03:00:06 -07:00
# Check containers
docker compose ps
2025-07-23 03:17:47 -07:00
echo "Creating sync script for staging directories..."
2025-07-23 03:00:06 -07:00
# Create sync script for staging dirs
cat > /home/cmc/sync_prod_to_staging.sh <<'EOF'
#!/bin/bash
rsync -a --delete /mnt/vault/pdf/ /home/cmc/cmc-sales-staging/app/webroot/pdf/
rsync -a --delete /mnt/vault/attachments_files/ /home/cmc/cmc-sales-staging/app/webroot/attachments_files/
rsync -a --delete /mnt/vault/emails/ /home/cmc/cmc-sales-staging/vault/emails/
rsync -a --delete /mnt/vault/vaultmsgs/ /home/cmc/cmc-sales-staging/vault/vaultmsgs/
EOF
chmod +x /home/cmc/sync_prod_to_staging.sh
2025-07-23 03:17:47 -07:00
echo "Ensuring cron job for sync script is present..."
2025-07-23 03:00:06 -07:00
# Add cron job if not present
(crontab -l 2>/dev/null | grep -q '/home/cmc/sync_prod_to_staging.sh') || \
(crontab -l 2>/dev/null; echo '0 3 * * * /home/cmc/sync_prod_to_staging.sh') | crontab -
2025-07-23 03:17:47 -07:00
echo "Deployment complete."
2025-07-23 03:00:06 -07:00
ENDSSH