#!/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."