Newer
Older
cortex-hub / remote_deploy.sh
#!/bin/bash
# Description: Automates deployment from the local environment to the production host 192.168.68.113

HOST="192.168.68.113"
USER="axieyangb"
PASS="a6163484a"
REMOTE_TMP="/tmp/cortex-hub/"
REMOTE_PROJ="/home/coder/project/cortex-hub"

echo "Checking if sshpass is installed..."
if ! command -v sshpass &> /dev/null; then
    echo "sshpass could not be found, installing..."
    sudo apt-get update && sudo apt-get install -y sshpass
fi

# 1. Sync local codebase to temporary directory on remote server
echo "Syncing local files to production..."
sshpass -p "$PASS" rsync -avz \
  --exclude '.git' \
  --exclude 'node_modules' \
  --exclude 'ui/client-app/node_modules' \
  --exclude 'ui/client-app/build' \
  --exclude 'ai-hub/__pycache__' \
  --exclude '.venv' \
  -e "ssh -o StrictHostKeyChecking=no" /app/ "$USER@$HOST:$REMOTE_TMP"

if [ $? -ne 0 ]; then
    echo "Rsync failed! Exiting."
    exit 1
fi

# 2. Copy the synced files into the actual project directory replacing the old ones
echo "Overwriting production project files..."
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$HOST" << EOF
  echo '$PASS' | sudo -S rm -rf $REMOTE_PROJ/nginx.conf
  echo '$PASS' | sudo -S cp -r ${REMOTE_TMP}* $REMOTE_PROJ/
  echo '$PASS' | sudo -S chown -R $USER:$USER $REMOTE_PROJ
EOF

# 3. Rebuild and restart services remotely
echo "Deploying on production server..."
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$HOST" << EOF
  cd $REMOTE_PROJ
  echo '$PASS' | sudo -S bash local_deployment.sh
EOF

echo "Done! The new code is deployed to $HOST."