Files

135 lines
4.3 KiB
Bash
Raw Permalink Normal View History

2026-01-02 20:27:42 -08:00
#!/usr/bin/env bash
# Master deployment script for DBIS Core Banking System
# Orchestrates deployment of all services in correct order
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
# Source utilities
source "$PROJECT_ROOT/dbis_core/scripts/utils/common.sh"
# Load configuration
load_config
log_info "========================================="
log_info "DBIS Core - Complete Deployment"
log_info "========================================="
log_info ""
# Check if running as root
check_root
if ! command_exists pct; then
error_exit "This script must be run on Proxmox host (pct command not found)"
fi
# Deployment flags
DEPLOY_POSTGRESQL="${DEPLOY_POSTGRESQL:-true}"
DEPLOY_REDIS="${DEPLOY_REDIS:-true}"
DEPLOY_API="${DEPLOY_API:-true}"
DEPLOY_FRONTEND="${DEPLOY_FRONTEND:-true}"
# Track deployment status
DEPLOYMENT_SUCCESS=true
FAILED_SERVICES=()
# Function to deploy service with error handling
deploy_service() {
local service_name="$1"
local script_path="$2"
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log_info "Deploying: $service_name"
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if [[ ! -f "$script_path" ]]; then
log_error "Deployment script not found: $script_path"
DEPLOYMENT_SUCCESS=false
FAILED_SERVICES+=("$service_name (script not found)")
return 1
fi
if bash "$script_path"; then
log_success "$service_name deployed successfully"
return 0
else
log_error "$service_name deployment failed"
DEPLOYMENT_SUCCESS=false
FAILED_SERVICES+=("$service_name")
return 1
fi
}
# Phase 1: Foundation Services
log_info "Phase 1: Deploying Foundation Services"
log_info ""
if [[ "$DEPLOY_POSTGRESQL" == "true" ]]; then
deploy_service "PostgreSQL" "$SCRIPT_DIR/deploy-postgresql.sh" || {
log_warn "PostgreSQL deployment failed, but continuing..."
}
log_info ""
fi
if [[ "$DEPLOY_REDIS" == "true" ]]; then
deploy_service "Redis" "$SCRIPT_DIR/deploy-redis.sh" || {
log_warn "Redis deployment failed, but continuing..."
}
log_info ""
fi
# Wait for foundation services to be ready
log_info "Waiting for foundation services to be ready..."
sleep 10
# Phase 2: Application Services
log_info "Phase 2: Deploying Application Services"
log_info ""
if [[ "$DEPLOY_API" == "true" ]]; then
deploy_service "API" "$SCRIPT_DIR/deploy-api.sh" || {
log_warn "API deployment failed, but continuing..."
}
log_info ""
fi
if [[ "$DEPLOY_FRONTEND" == "true" ]]; then
deploy_service "Frontend" "$SCRIPT_DIR/deploy-frontend.sh" || {
log_warn "Frontend deployment failed, but continuing..."
}
log_info ""
fi
# Deployment Summary
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log_info "Deployment Summary"
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log_info ""
if [[ "$DEPLOYMENT_SUCCESS" == "true" ]]; then
log_success "All services deployed successfully!"
log_info ""
log_info "Service Endpoints:"
log_info " PostgreSQL: ${DBIS_POSTGRES_PRIMARY_IP:-192.168.11.100}:5432"
log_info " Redis: ${DBIS_REDIS_IP:-192.168.11.120}:6379"
log_info " API: http://${DBIS_API_PRIMARY_IP:-192.168.11.150}:${DBIS_API_PORT:-3000}"
log_info " Frontend: http://${DBIS_FRONTEND_IP:-192.168.11.130}"
log_info ""
log_info "Next Steps:"
log_info "1. Run database migrations: ./scripts/deployment/configure-database.sh"
log_info "2. Check service status: ./scripts/management/status.sh"
log_info "3. Test API health: curl http://${DBIS_API_PRIMARY_IP:-192.168.11.150}:${DBIS_API_PORT:-3000}/health"
else
log_error "Deployment completed with errors!"
log_info ""
log_info "Failed Services:"
for service in "${FAILED_SERVICES[@]}"; do
log_error " - $service"
done
log_info ""
log_info "Please review the errors above and retry failed deployments."
exit 1
fi