bytelyst-devops-tools/dashboard/deploy.sh
root fbaaa71a66 feat(devops): adopt trading web deployment model with docker-compose
- Add docker-compose.yml following trading web pattern
- Update web Dockerfile to use multi-stage build with metadata
- Add build metadata (commit SHA, branch, timestamp, author, message)
- Rewrite deploy.sh to use docker compose with build metadata
- Add hotcopy deployment script for quick updates
- Add comprehensive backend API with deployment orchestration
- Add health checks, service management, and monitoring endpoints
- Add CI/CD workflow configuration
- Add deployment documentation and guides

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-11 03:24:11 +00:00

208 lines
6.1 KiB
Bash
Executable File

#!/bin/bash
# ByteLyst Dashboard Deployment Script
# Model: Following trading web deployment pattern with docker-compose
set -e
echo "🚀 ByteLyst Dashboard Deployment Script"
echo "======================================"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
DEVOPS_DIR="/opt/bytelyst/bytelyst-devops-tools/dashboard"
PLATFORM_DIR="/opt/bytelyst/learning_ai_common_plat"
# Function to print colored output
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
# Check prerequisites
check_prerequisites() {
echo "Checking prerequisites..."
if ! command -v docker &> /dev/null; then
print_error "Docker is not installed"
exit 1
fi
print_success "Docker is installed"
if ! command -v docker compose &> /dev/null; then
print_error "Docker Compose is not installed"
exit 1
fi
print_success "Docker Compose is installed"
if [ ! -f "$DEVOPS_DIR/backend/.env" ]; then
print_error "backend/.env file not found in $DEVOPS_DIR"
exit 1
fi
print_success "DevOps backend .env file found"
if [ ! -f "$PLATFORM_DIR/.env" ]; then
print_error ".env file not found in $PLATFORM_DIR"
exit 1
fi
print_success "Platform .env file found"
}
# Check platform network
check_network() {
echo "Checking platform network..."
if docker network inspect learning_ai_common_plat_default &> /dev/null; then
print_success "Platform network exists"
else
print_error "Platform network not found. Start the platform stack first:"
print_error " cd $PLATFORM_DIR && docker compose up -d"
exit 1
fi
}
# Deploy DevOps Dashboard
deploy_devops() {
echo "Deploying DevOps Dashboard..."
cd "$DEVOPS_DIR"
# Get git metadata for build
BYTELYST_COMMIT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BYTELYST_COMMIT_SHA_FULL=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
BYTELYST_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
BYTELYST_BUILT_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BYTELYST_COMMIT_AUTHOR=$(git log -1 --pretty=format:'%an' 2>/dev/null || echo "unknown")
BYTELYST_COMMIT_MESSAGE=$(git log -1 --pretty=format:'%s' 2>/dev/null || echo "unknown")
export BYTELYST_COMMIT_SHA
export BYTELYST_COMMIT_SHA_FULL
export BYTELYST_BRANCH
export BYTELYST_BUILT_AT
export BYTELYST_COMMIT_AUTHOR
export BYTELYST_COMMIT_MESSAGE
export BYTELYST_DOCKER_IMAGE="devops-web:latest"
docker compose down
docker compose up -d --build
print_success "DevOps Dashboard deployed"
}
# Deploy Admin Dashboard (via platform stack)
deploy_admin() {
echo "Deploying Admin Dashboard via platform stack..."
cd "$PLATFORM_DIR"
# Get git metadata for build
BYTELYST_COMMIT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BYTELYST_COMMIT_SHA_FULL=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
BYTELYST_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
BYTELYST_BUILT_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BYTELYST_COMMIT_AUTHOR=$(git log -1 --pretty=format:'%an' 2>/dev/null || echo "unknown")
BYTELYST_COMMIT_MESSAGE=$(git log -1 --pretty=format:'%s' 2>/dev/null || echo "unknown")
export BYTELYST_COMMIT_SHA
export BYTELYST_COMMIT_SHA_FULL
export BYTELYST_BRANCH
export BYTELYST_BUILT_AT
export BYTELYST_COMMIT_AUTHOR
export BYTELYST_COMMIT_MESSAGE
export BYTELYST_DOCKER_IMAGE="admin-web:latest"
# Start admin-web service
docker compose up -d admin-web --build
print_success "Admin Dashboard deployed"
}
# Health checks
health_checks() {
echo "Running health checks..."
# Wait for services to start
sleep 15
# Check DevOps Backend
if curl -s http://localhost:4004/health > /dev/null; then
print_success "DevOps Backend is healthy"
else
print_error "DevOps Backend health check failed"
fi
# Check DevOps Web
if curl -s http://localhost:3049 > /dev/null; then
print_success "DevOps Web is responding"
else
print_error "DevOps Web health check failed"
fi
# Check Admin Web
if curl -s http://localhost:3001 > /dev/null; then
print_success "Admin Web is responding"
else
print_error "Admin Web health check failed"
fi
}
# Show deployment info
show_info() {
echo ""
echo "======================================"
echo "Deployment Information"
echo "======================================"
echo "Local URLs:"
echo "DevOps Dashboard: http://localhost:3049"
echo "DevOps Backend: http://localhost:4004"
echo "Admin Dashboard: http://localhost:3001"
echo "Platform Service: http://localhost:4003"
echo ""
echo "Production URLs (via Traefik + DNS):"
echo "DevOps Dashboard: https://devops.bytelyst.com"
echo "Admin Dashboard: https://admin.bytelyst.com"
echo "API Gateway: https://api.bytelyst.com"
echo " - Platform API: https://api.bytelyst.com/platform/api"
echo " - DevOps API: https://api.bytelyst.com/devops"
echo ""
echo "Deployment Model:"
echo "- Following trading web docker-compose pattern"
echo "- Multi-stage Docker builds with build metadata"
echo "- Services connected via learning_ai_common_plat_default network"
echo "- Health checks and automatic restarts configured"
echo ""
echo "Quick Updates (Hotcopy):"
echo "- DevOps: cd $DEVOPS_DIR && ./scripts/deploy-hotcopy.sh"
echo "- Admin: cd $PLATFORM_DIR && ./scripts/deploy-admin-hotcopy.sh"
echo ""
echo "Next steps:"
echo "1. Configure DNS records for devops.bytelyst.com and admin.bytelyst.com"
echo "2. Configure SSL certificates in Traefik"
echo "3. Grant user access via platform-service memberships"
echo ""
echo "See DEPLOYMENT_GUIDE.md for detailed instructions"
}
# Main deployment flow
main() {
check_prerequisites
check_network
deploy_devops
deploy_admin
health_checks
show_info
}
# Run main function
main "$@"