Skip to main content

PresBot Server Deployment

Automated CI/CD deployment using GitHub Actions on self-hosted runners.


Deployment Overview

EnvironmentBranchAuto-Deploy
Productionworking_v4✅ On push
UATrelease/uat✅ On push

Server Locations

Host: Blackwell Server (NVIDIA GPU Workstation)

EnvironmentPathGPU
Production/home/dash_ra/dmsb-dash-labs/presbot-server-prodGPU 0
UAT/home/dash_ra/dmsb-dash-labs/presbot-server-uatGPU 1

Environment Configuration

Production

SettingValue
Server Port6969
Flower Port5555
Redis DB0
Celery Workers20
Docker Subnet172.26.0.0/16
MinIO Bucketpresbotclone

UAT

SettingValue
Server Port6968
Flower Port5556
Redis DB1
Celery Workers3
Docker Subnet172.25.0.0/16
MinIO Bucketpresbotclone-uat

Deployment Pipeline

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Push to │────▶│ Setup │────▶│ Test │
│ Branch │ │ (Detect │ │ (Linting) │
│ │ │ Env) │ │ │
└─────────────┘ └─────────────┘ └──────┬──────┘

┌─────────────┐ ┌──────▼──────┐
│ Rollback │◀────│ Deploy │
│ (On Fail) │ │ (Build & │
│ │ │ Start) │
└─────────────┘ └─────────────┘

Pipeline Steps

  1. Setup - Detect environment from branch
  2. Test - Run linting and syntax checks (optional)
  3. Deploy
    • Pull latest code
    • Create .env file
    • Build Docker images
    • Start services
    • Health checks
    • Smoke tests
  4. Rollback - Auto-revert on failure

GitHub Secrets Required

SecretDescription
GH_PATGitHub Personal Access Token (repo access)
MONGO_URI_PRODMongoDB connection string (production)
MONGO_URI_UATMongoDB connection string (UAT)
MINIO_ENDPOINTMinIO storage endpoint
MINIO_ACCESS_KEYMinIO access key
MINIO_SECRET_KEYMinIO secret key
JWT_SECRETJWT authentication secret
FLASK_SECRET_KEYFlask session secret
FLOWER_PASSWORDFlower UI password
TEAMS_WEBHOOK_URLMicrosoft Teams notifications

Deploy Commands

Automatic Deployment

# Deploy to UAT
git push origin release/uat

# Deploy to Production
git push origin working_v4

Manual Deployment (Workflow Dispatch)

  1. Go to ActionsDeploy PresBot Server
  2. Click Run workflow
  3. Select environment: production or uat
  4. Optionally skip tests

Manual Server Commands

# SSH into Blackwell server
ssh dash_ra@blackwell

# Navigate to environment
cd /home/dash_ra/dmsb-dash-labs/presbot-server-prod # or -uat

# View running services
docker-compose ps

# View logs
docker-compose logs -f api
docker-compose logs -f celery-worker

# Restart services
docker-compose restart

# Scale workers
docker-compose up -d --scale celery-worker=5

# Rebuild and restart
docker-compose up -d --build

Health Checks

API Health

# Production
curl http://localhost:6969/health

# UAT
curl http://localhost:6968/health

Flower Dashboard

EnvironmentURL
Productionhttp://blackwell:5555
UAThttp://blackwell:5556

Credentials: admin / <FLOWER_PASSWORD>


Rollback

Automatic Rollback

Triggered automatically when deployment fails:

  • Stops failed containers
  • Reverts to previous commit (HEAD~1)
  • Restarts services

Manual Rollback

cd /home/dash_ra/dmsb-dash-labs/presbot-server-prod

# Stop services
docker-compose down

# Revert to previous commit
git reset --hard HEAD~1

# Restart
docker-compose up -d

Troubleshooting

Common Issues

IssueSolution
API not startingCheck logs: docker-compose logs api
GPU OOMReduce workers: --scale celery-worker=2
Git auth failedVerify GH_PAT secret is valid
Redis connectionCheck Redis health: docker-compose exec redis redis-cli ping

View Container Logs

# All services
docker-compose logs -f

# Specific service
docker-compose logs -f api
docker-compose logs -f celery-worker
docker-compose logs -f whisper-service

# Last 100 lines
docker-compose logs --tail=100 api

Check Resource Usage

docker stats --no-stream

Notifications

Deployment status is sent to Microsoft Teams:

StatusColor
🚀 StartingBlue
✅ SuccessGreen
❌ FailureRed