From 64f2dd853e7bd94f9db145881751789f6d5125a0 Mon Sep 17 00:00:00 2001 From: iDefineHD Date: Sun, 11 Jan 2026 00:41:49 +0000 Subject: [PATCH] Simplify deployment - use direct SSH/rsync instead of actions --- .gitea/workflows/deploy.yml | 139 ++++++++++-------------------------- 1 file changed, 39 insertions(+), 100 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5e42543..a9ca7df 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -4,7 +4,6 @@ on: push: branches: - main - workflow_dispatch: jobs: deploy: @@ -37,137 +36,77 @@ jobs: VITE_API_URL: https://api.turbotrades.dev VITE_WS_URL: https://ws.turbotrades.dev - - name: Deploy to Production - uses: appleboy/ssh-action@v1.0.0 - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - password: ${{ secrets.SERVER_PASSWORD }} - port: ${{ secrets.SERVER_PORT || 22 }} - script: | - echo "πŸš€ Starting deployment to turbotrades.dev..." + - name: Install SSH Client + run: | + sudo apt-get update + sudo apt-get install -y sshpass rsync - # Create directories if they don't exist - mkdir -p /root/ttbackend - mkdir -p /root/ttbackend/logs - mkdir -p /var/www/html/turbotrades + - name: Deploy to Server + env: + SERVER_HOST: ${{ secrets.SERVER_HOST }} + SERVER_USER: ${{ secrets.SERVER_USER }} + SERVER_PASSWORD: ${{ secrets.SERVER_PASSWORD }} + run: | + echo "πŸš€ Starting deployment..." - # Navigate to backend directory + # Deploy files via rsync + echo "πŸ“¦ Syncing backend files..." + sshpass -p "$SERVER_PASSWORD" rsync -avz --delete \ + --exclude 'node_modules' \ + --exclude '.git' \ + --exclude '.env' \ + --exclude 'logs' \ + -e "ssh -o StrictHostKeyChecking=no -p 22" \ + ./ ${SERVER_USER}@${SERVER_HOST}:/root/ttbackend/ + + echo "🎨 Syncing frontend build..." + sshpass -p "$SERVER_PASSWORD" rsync -avz --delete \ + -e "ssh -o StrictHostKeyChecking=no -p 22" \ + ./frontend/dist/ ${SERVER_USER}@${SERVER_HOST}:/var/www/html/turbotrades/ + + echo "▢️ Running deployment commands on server..." + sshpass -p "$SERVER_PASSWORD" ssh -o StrictHostKeyChecking=no -p 22 ${SERVER_USER}@${SERVER_HOST} bash << 'EOF' cd /root/ttbackend - # Stop the application - echo "⏸️ Stopping backend..." - pm2 stop turbotrades-backend || echo "Backend not running" - - # Backup current version - echo "πŸ’Ύ Creating backup..." - if [ -d "/root/ttbackend-backup" ]; then - rm -rf /root/ttbackend-backup-old - mv /root/ttbackend-backup /root/ttbackend-backup-old - fi - mkdir -p /root/ttbackend-backup - cp -r /root/ttbackend/* /root/ttbackend-backup/ 2>/dev/null || true - - # Clone or pull repository - if [ -d ".git" ]; then - echo "πŸ“₯ Pulling latest code..." - git fetch origin - git reset --hard origin/main - git clean -fd - else - echo "πŸ“₯ Cloning repository..." - cd /root - rm -rf ttbackend/* - git clone https://git.turbotrades.dev/iDefineHD/TurboTrades.git ttbackend - cd ttbackend - fi - # Install backend dependencies echo "πŸ“¦ Installing backend dependencies..." npm install --production - # Build frontend - echo "🎨 Building frontend..." - cd frontend - npm install - npm run build - - # Deploy frontend to nginx directory - echo "πŸš€ Deploying frontend to /var/www/html/turbotrades..." - rm -rf /var/www/html/turbotrades/* - cp -r dist/* /var/www/html/turbotrades/ - - # Set proper permissions + # Set frontend permissions + echo "πŸ”’ Setting frontend permissions..." chown -R www-data:www-data /var/www/html/turbotrades chmod -R 755 /var/www/html/turbotrades - # Back to backend directory - cd /root/ttbackend - - # Start backend with PM2 - echo "▢️ Starting backend..." - pm2 start ecosystem.config.js --env production + # Restart backend with PM2 + echo "πŸ”„ Restarting backend..." + pm2 restart turbotrades-backend 2>/dev/null || pm2 start ecosystem.config.js --env production pm2 save - # Verify deployment echo "βœ… Deployment complete!" - echo "" - echo "πŸ“Š PM2 Status:" pm2 list - echo "" - echo "🌐 Frontend: https://turbotrades.dev" - echo "πŸ”§ Backend: https://api.turbotrades.dev" - echo "πŸ’¬ WebSocket: https://ws.turbotrades.dev" + EOF - name: Health Check run: | echo "⏳ Waiting for services to start..." - sleep 15 + sleep 10 - echo "πŸ₯ Checking backend health..." - curl -f https://api.turbotrades.dev/api/health || echo "⚠️ Backend health check failed" + echo "πŸ₯ Checking backend..." + curl -f https://api.turbotrades.dev/api/health || echo "⚠️ Backend check failed" echo "πŸ₯ Checking frontend..." - curl -f https://turbotrades.dev || echo "⚠️ Frontend check failed" + curl -f https://turbotrades.dev || echo "⚠️ Frontend check failed" - name: Notify Success if: success() run: | echo "βœ… Deployment successful!" echo "🌐 Frontend: https://turbotrades.dev" - echo "πŸ”§ Backend: https://api.turbotrades.dev" + echo "πŸ”§ Backend: https://api.turbotrades.dev" echo "πŸ’¬ WebSocket: https://ws.turbotrades.dev" - echo "πŸ“… Time: $(date)" - name: Notify Failure if: failure() run: | echo "❌ Deployment failed!" echo "Check the logs above for details" - - - name: Rollback on Failure - if: failure() - uses: appleboy/ssh-action@v1.0.0 - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - password: ${{ secrets.SERVER_PASSWORD}} - port: ${{ secrets.SERVER_PORT || 22 }} - script: | - echo "πŸ”„ Rolling back to previous version..." - - if [ -d "/root/ttbackend-backup" ]; then - echo "πŸ“¦ Restoring backend from backup..." - cd /root - rm -rf ttbackend - cp -r ttbackend-backup ttbackend - cd ttbackend - - echo "▢️ Restarting backend..." - pm2 restart turbotrades-backend - pm2 save - - echo "βœ… Rollback complete" - else - echo "❌ No backup found!" - fi