Telegram Bot + Mini App for city walking quests. - React 19 + TypeScript + Vite 6 frontend - Express 5 + PostgreSQL backend - grammY Telegram bot with DeepSeek AI - GitLab CI/CD: lint, build, deploy to production Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
1.3 KiB
Bash
58 lines
1.3 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
SERVER="${DEPLOY_SERVER:-root@85.239.58.182}"
|
|
REMOTE_DIR="/root/guidly"
|
|
DOMAIN="gidli.ru"
|
|
|
|
echo "=== Building project ==="
|
|
npm run build
|
|
|
|
echo "=== Creating deployment archive ==="
|
|
tar -czf deploy.tar.gz \
|
|
dist/ \
|
|
dist-server/ \
|
|
dist-bot/ \
|
|
package.json \
|
|
package-lock.json \
|
|
ecosystem.config.cjs \
|
|
deploy/nginx-guidly.conf
|
|
|
|
echo "=== Uploading to server ==="
|
|
scp deploy.tar.gz "$SERVER:/tmp/"
|
|
|
|
echo "=== Deploying on server ==="
|
|
ssh "$SERVER" << ENDSSH
|
|
set -e
|
|
mkdir -p $REMOTE_DIR
|
|
cd $REMOTE_DIR
|
|
|
|
# Extract new files
|
|
tar -xzf /tmp/deploy.tar.gz
|
|
rm /tmp/deploy.tar.gz
|
|
|
|
# Install production dependencies
|
|
npm install --omit=dev
|
|
|
|
# Copy nginx config if not already linked
|
|
if [ ! -f /etc/nginx/sites-available/$DOMAIN ]; then
|
|
cp deploy/nginx-guidly.conf /etc/nginx/sites-available/$DOMAIN
|
|
ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/
|
|
rm -f /etc/nginx/sites-enabled/default
|
|
nginx -t && systemctl reload nginx
|
|
echo "Nginx config installed. Run 'certbot --nginx -d $DOMAIN' if SSL not yet set up."
|
|
fi
|
|
|
|
# Restart app via PM2
|
|
pm2 delete guidly-server 2>/dev/null || true
|
|
pm2 start ecosystem.config.cjs
|
|
pm2 save
|
|
|
|
echo "=== Deployment complete ==="
|
|
echo "App: https://$DOMAIN"
|
|
ENDSSH
|
|
|
|
echo "=== Cleanup ==="
|
|
rm deploy.tar.gz
|
|
echo "=== Deploy complete ==="
|