- Delete AIPowerRental.sol (566 lines) - replaced by AgentBounty.sol - Remove rental agreement system with provider/consumer model - Remove performance metrics and SLA tracking - Remove dispute resolution mechanism - Remove ZK-proof verification for performance - Remove provider/consumer authorization system - Bounty system provides superior developer incentive structure
775 lines
23 KiB
Bash
Executable File
775 lines
23 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# AITBC Platform Deployment Script for aitbc and aitbc1 Servers
|
|
# Deploys the complete platform to both production servers
|
|
|
|
set -euo pipefail
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
PURPLE='\033[0;35m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
print_critical() {
|
|
echo -e "${RED}[CRITICAL]${NC} $1"
|
|
}
|
|
|
|
print_server() {
|
|
echo -e "${PURPLE}[SERVER]${NC} $1"
|
|
}
|
|
|
|
print_deploy() {
|
|
echo -e "${CYAN}[DEPLOY]${NC} $1"
|
|
}
|
|
|
|
# Configuration
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
CONTRACTS_DIR="$ROOT_DIR/contracts"
|
|
SERVICES_DIR="$ROOT_DIR/apps/coordinator-api/src/app/services"
|
|
FRONTEND_DIR="$ROOT_DIR/apps/marketplace-web"
|
|
INFRA_DIR="$ROOT_DIR/infra"
|
|
|
|
# Server configuration
|
|
AITBC_SERVER="aitbc-cascade"
|
|
AITBC1_SERVER="aitbc1-cascade"
|
|
AITBC_HOST="aitbc.bubuit.net"
|
|
AITBC1_HOST="aitbc1.bubuit.net"
|
|
AITBC_PORT="22"
|
|
AITBC1_PORT="22"
|
|
|
|
# Deployment configuration
|
|
DEPLOY_CONTRACTS=${1:-"true"}
|
|
DEPLOY_SERVICES=${2:-"true"}
|
|
DEPLOY_FRONTEND=${3:-"true"}
|
|
SKIP_VERIFICATION=${4:-"false"}
|
|
BACKUP_BEFORE_DEPLOY=${5:-"true"}
|
|
|
|
echo "🚀 AITBC Platform Deployment to aitbc and aitbc1 Servers"
|
|
echo "======================================================="
|
|
echo "Deploy Contracts: $DEPLOY_CONTRACTS"
|
|
echo "Deploy Services: $DEPLOY_SERVICES"
|
|
echo "Deploy Frontend: $DEPLOY_FRONTEND"
|
|
echo "Skip Verification: $SKIP_VERIFICATION"
|
|
echo "Backup Before Deploy: $BACKUP_BEFORE_DEPLOY"
|
|
echo "Timestamp: $(date -Iseconds)"
|
|
echo ""
|
|
|
|
# Pre-deployment checks
|
|
check_prerequisites() {
|
|
print_status "Checking prerequisites..."
|
|
|
|
# Check if SSH keys are available
|
|
if [[ ! -f "$HOME/.ssh/id_rsa" ]] && [[ ! -f "$HOME/.ssh/id_ed25519" ]]; then
|
|
print_error "SSH keys not found. Please generate SSH keys first."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if we can connect to servers
|
|
print_status "Testing SSH connections..."
|
|
if ! ssh -o ConnectTimeout=10 -o BatchMode=yes $AITBC_SERVER "echo 'Connection successful'" 2>/dev/null; then
|
|
print_error "Cannot connect to $AITBC_SERVER"
|
|
exit 1
|
|
fi
|
|
|
|
if ! ssh -o ConnectTimeout=10 -o BatchMode=yes $AITBC1_SERVER "echo 'Connection successful'" 2>/dev/null; then
|
|
print_error "Cannot connect to $AITBC1_SERVER"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if required directories exist
|
|
if [[ ! -d "$CONTRACTS_DIR" ]]; then
|
|
print_error "Contracts directory not found: $CONTRACTS_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -d "$SERVICES_DIR" ]]; then
|
|
print_error "Services directory not found: $SERVICES_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -d "$FRONTEND_DIR" ]]; then
|
|
print_error "Frontend directory not found: $FRONTEND_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Prerequisites check completed"
|
|
}
|
|
|
|
# Backup existing deployment
|
|
backup_deployment() {
|
|
if [[ "$BACKUP_BEFORE_DEPLOY" != "true" ]]; then
|
|
print_status "Skipping backup (disabled)"
|
|
return
|
|
fi
|
|
|
|
print_status "Creating backup of existing deployment..."
|
|
|
|
local backup_dir="/tmp/aitbc-backup-$(date +%Y%m%d-%H%M%S)"
|
|
|
|
# Backup aitbc server
|
|
print_server "Backing up aitbc server..."
|
|
ssh $AITBC_SERVER "
|
|
mkdir -p $backup_dir
|
|
sudo cp -r /var/www/aitbc.bubuit.net $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /var/www/html $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /etc/nginx/sites-enabled/ $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /etc/systemd/system/aitbc* $backup_dir/ 2>/dev/null || true
|
|
echo 'aitbc backup completed'
|
|
"
|
|
|
|
# Backup aitbc1 server
|
|
print_server "Backing up aitbc1 server..."
|
|
ssh $AITBC1_SERVER "
|
|
mkdir -p $backup_dir
|
|
sudo cp -r /var/www/aitbc.bubuit.net $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /var/www/html $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /etc/nginx/sites-enabled/ $backup_dir/ 2>/dev/null || true
|
|
sudo cp -r /etc/systemd/system/aitbc* $backup_dir/ 2>/dev/null || true
|
|
echo 'aitbc1 backup completed'
|
|
"
|
|
|
|
print_success "Backup completed: $backup_dir"
|
|
}
|
|
|
|
# Deploy smart contracts
|
|
deploy_contracts() {
|
|
if [[ "$DEPLOY_CONTRACTS" != "true" ]]; then
|
|
print_status "Skipping contract deployment (disabled)"
|
|
return
|
|
fi
|
|
|
|
print_status "Deploying smart contracts..."
|
|
|
|
cd "$CONTRACTS_DIR"
|
|
|
|
# Check if contracts are already deployed
|
|
if [[ -f "deployed-contracts-mainnet.json" ]]; then
|
|
print_warning "Contracts already deployed. Skipping deployment."
|
|
return
|
|
fi
|
|
|
|
# Compile contracts
|
|
print_status "Compiling contracts..."
|
|
npx hardhat compile
|
|
|
|
# Deploy to mainnet
|
|
print_status "Deploying contracts to mainnet..."
|
|
npx hardhat run scripts/deploy-advanced-contracts.js --network mainnet
|
|
|
|
# Verify contracts
|
|
if [[ "$SKIP_VERIFICATION" != "true" ]]; then
|
|
print_status "Verifying contracts..."
|
|
npx hardhat run scripts/verify-advanced-contracts.js --network mainnet
|
|
fi
|
|
|
|
print_success "Smart contracts deployed and verified"
|
|
}
|
|
|
|
# Deploy backend services
|
|
deploy_services() {
|
|
if [[ "$DEPLOY_SERVICES" != "true" ]]; then
|
|
print_status "Skipping service deployment (disabled)"
|
|
return
|
|
fi
|
|
|
|
print_status "Deploying backend services..."
|
|
|
|
# Deploy to aitbc server
|
|
print_server "Deploying services to aitbc server..."
|
|
|
|
# Copy services to aitbc
|
|
scp -r "$SERVICES_DIR" $AITBC_SERVER:/tmp/
|
|
|
|
# Install dependencies and setup services on aitbc
|
|
ssh $AITBC_SERVER "
|
|
# Create service directory
|
|
sudo mkdir -p /opt/aitbc/services
|
|
|
|
# Copy services
|
|
sudo cp -r /tmp/services/* /opt/aitbc/services/
|
|
|
|
# Install Python dependencies
|
|
cd /opt/aitbc/services
|
|
python3 -m pip install -r requirements.txt 2>/dev/null || true
|
|
|
|
# Create systemd services
|
|
sudo tee /etc/systemd/system/aitbc-cross-chain-reputation.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Cross Chain Reputation Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m cross_chain_reputation
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo tee /etc/systemd/system/aitbc-agent-communication.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Agent Communication Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m agent_communication
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo tee /etc/systemd/system/aitbc-advanced-learning.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Advanced Learning Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m advanced_learning
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Reload systemd and start services
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable aitbc-cross-chain-reputation
|
|
sudo systemctl enable aitbc-agent-communication
|
|
sudo systemctl enable aitbc-advanced-learning
|
|
sudo systemctl start aitbc-cross-chain-reputation
|
|
sudo systemctl start aitbc-agent-communication
|
|
sudo systemctl start aitbc-advanced-learning
|
|
|
|
echo 'Services deployed and started on aitbc'
|
|
"
|
|
|
|
# Deploy to aitbc1 server
|
|
print_server "Deploying services to aitbc1 server..."
|
|
|
|
# Copy services to aitbc1
|
|
scp -r "$SERVICES_DIR" $AITBC1_SERVER:/tmp/
|
|
|
|
# Install dependencies and setup services on aitbc1
|
|
ssh $AITBC1_SERVER "
|
|
# Create service directory
|
|
sudo mkdir -p /opt/aitbc/services
|
|
|
|
# Copy services
|
|
sudo cp -r /tmp/services/* /opt/aitbc/services/
|
|
|
|
# Install Python dependencies
|
|
cd /opt/aitbc/services
|
|
python3 -m pip install -r requirements.txt 2>/dev/null || true
|
|
|
|
# Create systemd services
|
|
sudo tee /etc/systemd/system/aitbc-cross-chain-reputation.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Cross Chain Reputation Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m cross_chain_reputation
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo tee /etc/systemd/system/aitbc-agent-communication.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Agent Communication Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m agent_communication
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo tee /etc/systemd/system/aitbc-advanced-learning.service > /dev/null << 'EOF'
|
|
[Unit]
|
|
Description=AITBC Advanced Learning Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=aitbc
|
|
WorkingDirectory=/opt/aitbc/services
|
|
ExecStart=/usr/bin/python3 -m advanced_learning
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Reload systemd and start services
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable aitbc-cross-chain-reputation
|
|
sudo systemctl enable aitbc-agent-communication
|
|
sudo systemctl enable aitbc-advanced-learning
|
|
sudo systemctl start aitbc-cross-chain-reputation
|
|
sudo systemctl start aitbc-agent-communication
|
|
sudo systemctl start aitbc-advanced-learning
|
|
|
|
echo 'Services deployed and started on aitbc1'
|
|
"
|
|
|
|
print_success "Backend services deployed to both servers"
|
|
}
|
|
|
|
# Deploy frontend
|
|
deploy_frontend() {
|
|
if [[ "$DEPLOY_FRONTEND" != "true" ]]; then
|
|
print_status "Skipping frontend deployment (disabled)"
|
|
return
|
|
fi
|
|
|
|
print_status "Building and deploying frontend..."
|
|
|
|
cd "$FRONTEND_DIR"
|
|
|
|
# Build frontend
|
|
print_status "Building frontend application..."
|
|
npm run build
|
|
|
|
# Deploy to aitbc server
|
|
print_server "Deploying frontend to aitbc server..."
|
|
|
|
# Copy built frontend to aitbc
|
|
scp -r build/* $AITBC_SERVER:/tmp/frontend/
|
|
|
|
ssh $AITBC_SERVER "
|
|
# Backup existing frontend
|
|
sudo cp -r /var/www/aitbc.bubuit.net /var/www/aitbc.bubuit.net.backup 2>/dev/null || true
|
|
|
|
# Deploy new frontend
|
|
sudo rm -rf /var/www/aitbc.bubuit.net/*
|
|
sudo cp -r /tmp/frontend/* /var/www/aitbc.bubuit.net/
|
|
|
|
# Set permissions
|
|
sudo chown -R www-data:www-data /var/www/aitbc.bubuit.net/
|
|
sudo chmod -R 755 /var/www/aitbc.bubuit.net/
|
|
|
|
echo 'Frontend deployed to aitbc'
|
|
"
|
|
|
|
# Deploy to aitbc1 server
|
|
print_server "Deploying frontend to aitbc1 server..."
|
|
|
|
# Copy built frontend to aitbc1
|
|
scp -r build/* $AITBC1_SERVER:/tmp/frontend/
|
|
|
|
ssh $AITBC1_SERVER "
|
|
# Backup existing frontend
|
|
sudo cp -r /var/www/aitbc.bubuit.net /var/www/aitbc.bubuit.net.backup 2>/dev/null || true
|
|
|
|
# Deploy new frontend
|
|
sudo rm -rf /var/www/aitbc.bubuit.net/*
|
|
sudo cp -r /tmp/frontend/* /var/www/aitbc.bubuit.net/
|
|
|
|
# Set permissions
|
|
sudo chown -R www-data:www-data /var/www/aitbc.bubuit.net/
|
|
sudo chmod -R 755 /var/www/aitbc.bubuit.net/
|
|
|
|
echo 'Frontend deployed to aitbc1'
|
|
"
|
|
|
|
print_success "Frontend deployed to both servers"
|
|
}
|
|
|
|
# Deploy configuration files
|
|
deploy_configuration() {
|
|
print_status "Deploying configuration files..."
|
|
|
|
# Create nginx configuration for aitbc
|
|
print_server "Deploying nginx configuration to aitbc..."
|
|
ssh $AITBC_SERVER "
|
|
sudo tee /etc/nginx/sites-available/aitbc-advanced.conf > /dev/null << 'EOF'
|
|
server {
|
|
listen 80;
|
|
server_name aitbc.bubuit.net;
|
|
|
|
root /var/www/aitbc.bubuit.net;
|
|
index index.html;
|
|
|
|
# Security headers
|
|
add_header X-Frame-Options DENY;
|
|
add_header X-Content-Type-Options nosniff;
|
|
add_header X-XSS-Protection \"1; mode=block\";
|
|
add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;
|
|
|
|
# Gzip compression
|
|
gzip on;
|
|
gzip_vary on;
|
|
gzip_min_length 1024;
|
|
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
|
|
|
|
# API routes
|
|
location /api/ {
|
|
proxy_pass http://localhost:8000/;
|
|
proxy_set_header Host \$host;
|
|
proxy_set_header X-Real-IP \$remote_addr;
|
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
}
|
|
|
|
# Advanced features API
|
|
location /api/v1/advanced/ {
|
|
proxy_pass http://localhost:8001/;
|
|
proxy_set_header Host \$host;
|
|
proxy_set_header X-Real-IP \$remote_addr;
|
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
}
|
|
|
|
# Static files
|
|
location / {
|
|
try_files \$uri \$uri/ /index.html;
|
|
expires 1y;
|
|
add_header Cache-Control \"public, immutable\";
|
|
}
|
|
|
|
# Health check
|
|
location /health {
|
|
access_log off;
|
|
return 200 \"healthy\";
|
|
add_header Content-Type text/plain;
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# Enable site
|
|
sudo ln -sf /etc/nginx/sites-available/aitbc-advanced.conf /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
|
|
echo 'Nginx configuration deployed to aitbc'
|
|
"
|
|
|
|
# Create nginx configuration for aitbc1
|
|
print_server "Deploying nginx configuration to aitbc1..."
|
|
ssh $AITBC1_SERVER "
|
|
sudo tee /etc/nginx/sites-available/aitbc1-advanced.conf > /dev/null << 'EOF'
|
|
server {
|
|
listen 80;
|
|
server_name aitbc1.bubuit.net;
|
|
|
|
root /var/www/aitbc.bubuit.net;
|
|
index index.html;
|
|
|
|
# Security headers
|
|
add_header X-Frame-Options DENY;
|
|
add_header X-Content-Type-Options nosniff;
|
|
add_header X-XSS-Protection \"1; mode=block\";
|
|
add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;
|
|
|
|
# Gzip compression
|
|
gzip on;
|
|
gzip_vary on;
|
|
gzip_min_length 1024;
|
|
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
|
|
|
|
# API routes
|
|
location /api/ {
|
|
proxy_pass http://localhost:8000/;
|
|
proxy_set_header Host \$host;
|
|
proxy_set_header X-Real-IP \$remote_addr;
|
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
}
|
|
|
|
# Advanced features API
|
|
location /api/v1/advanced/ {
|
|
proxy_pass http://localhost:8001/;
|
|
proxy_set_header Host \$host;
|
|
proxy_set_header X-Real-IP \$remote_addr;
|
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
}
|
|
|
|
# Static files
|
|
location / {
|
|
try_files \$uri \$uri/ /index.html;
|
|
expires 1y;
|
|
add_header Cache-Control \"public, immutable\";
|
|
}
|
|
|
|
# Health check
|
|
location /health {
|
|
access_log off;
|
|
return 200 \"healthy\";
|
|
add_header Content-Type text/plain;
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# Enable site
|
|
sudo ln -sf /etc/nginx/sites-available/aitbc1-advanced.conf /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
|
|
echo 'Nginx configuration deployed to aitbc1'
|
|
"
|
|
|
|
print_success "Configuration files deployed to both servers"
|
|
}
|
|
|
|
# Verify deployment
|
|
verify_deployment() {
|
|
if [[ "$SKIP_VERIFICATION" == "true" ]]; then
|
|
print_status "Skipping verification (disabled)"
|
|
return
|
|
fi
|
|
|
|
print_status "Verifying deployment..."
|
|
|
|
# Verify aitbc server
|
|
print_server "Verifying aitbc server deployment..."
|
|
ssh $AITBC_SERVER "
|
|
echo '=== aitbc Server Status ==='
|
|
|
|
# Check services
|
|
echo 'Services:'
|
|
sudo systemctl is-active aitbc-cross-chain-reputation || echo 'cross-chain-reputation: INACTIVE'
|
|
sudo systemctl is-active aitbc-agent-communication || echo 'agent-communication: INACTIVE'
|
|
sudo systemctl is-active aitbc-advanced-learning || echo 'advanced-learning: INACTIVE'
|
|
|
|
# Check nginx
|
|
echo 'Nginx:'
|
|
sudo systemctl is-active nginx || echo 'nginx: INACTIVE'
|
|
sudo nginx -t || echo 'nginx config: ERROR'
|
|
|
|
# Check web server
|
|
echo 'Web server:'
|
|
curl -s http://localhost/health || echo 'health check: FAILED'
|
|
|
|
# Check API endpoints
|
|
echo 'API endpoints:'
|
|
curl -s http://localhost:8000/health || echo 'API health: FAILED'
|
|
curl -s http://localhost:8001/health || echo 'Advanced API health: FAILED'
|
|
|
|
echo 'aitbc verification completed'
|
|
"
|
|
|
|
# Verify aitbc1 server
|
|
print_server "Verifying aitbc1 server deployment..."
|
|
ssh $AITBC1_SERVER "
|
|
echo '=== aitbc1 Server Status ==='
|
|
|
|
# Check services
|
|
echo 'Services:'
|
|
sudo systemctl is-active aitbc-cross-chain-reputation || echo 'cross-chain-reputation: INACTIVE'
|
|
sudo systemctl is-active aitbc-agent-communication || echo 'agent-communication: INACTIVE'
|
|
sudo systemctl is-active aitbc-advanced-learning || echo 'advanced-learning: INACTIVE'
|
|
|
|
# Check nginx
|
|
echo 'Nginx:'
|
|
sudo systemctl is-active nginx || echo 'nginx: INACTIVE'
|
|
sudo nginx -t || echo 'nginx config: ERROR'
|
|
|
|
# Check web server
|
|
echo 'Web server:'
|
|
curl -s http://localhost/health || echo 'health check: FAILED'
|
|
|
|
# Check API endpoints
|
|
echo 'API endpoints:'
|
|
curl -s http://localhost:8000/health || echo 'API health: FAILED'
|
|
curl -s http://localhost:8001/health || echo 'Advanced API health: FAILED'
|
|
|
|
echo 'aitbc1 verification completed'
|
|
"
|
|
|
|
print_success "Deployment verification completed"
|
|
}
|
|
|
|
# Test external connectivity
|
|
test_connectivity() {
|
|
print_status "Testing external connectivity..."
|
|
|
|
# Test aitbc server
|
|
print_server "Testing aitbc external connectivity..."
|
|
if curl -s "http://$AITBC_HOST/health" | grep -q "healthy"; then
|
|
print_success "aitbc server is accessible externally"
|
|
else
|
|
print_warning "aitbc server external connectivity issue"
|
|
fi
|
|
|
|
# Test aitbc1 server
|
|
print_server "Testing aitbc1 external connectivity..."
|
|
if curl -s "http://$AITBC1_HOST/health" | grep -q "healthy"; then
|
|
print_success "aitbc1 server is accessible externally"
|
|
else
|
|
print_warning "aitbc1 server external connectivity issue"
|
|
fi
|
|
}
|
|
|
|
# Generate deployment report
|
|
generate_report() {
|
|
print_status "Generating deployment report..."
|
|
|
|
local report_file="$ROOT_DIR/deployment-report-$(date +%Y%m%d-%H%M%S).json"
|
|
|
|
cat > "$report_file" << EOF
|
|
{
|
|
"deployment": {
|
|
"timestamp": "$(date -Iseconds)",
|
|
"servers": ["aitbc", "aitbc1"],
|
|
"contracts_deployed": "$DEPLOY_CONTRACTS",
|
|
"services_deployed": "$DEPLOY_SERVICES",
|
|
"frontend_deployed": "$DEPLOY_FRONTEND",
|
|
"backup_created": "$BACKUP_BEFORE_DEPLOY",
|
|
"verification_completed": "$([[ "$SKIP_VERIFICATION" != "true" ]] && echo "true" || echo "false")"
|
|
},
|
|
"servers": {
|
|
"aitbc": {
|
|
"host": "$AITBC_HOST",
|
|
"services": {
|
|
"cross_chain_reputation": "deployed",
|
|
"agent_communication": "deployed",
|
|
"advanced_learning": "deployed"
|
|
},
|
|
"web_server": "nginx",
|
|
"api_endpoints": {
|
|
"main": "http://$AITBC_HOST/api/",
|
|
"advanced": "http://$AITBC_HOST/api/v1/advanced/"
|
|
}
|
|
},
|
|
"aitbc1": {
|
|
"host": "$AITBC1_HOST",
|
|
"services": {
|
|
"cross_chain_reputation": "deployed",
|
|
"agent_communication": "deployed",
|
|
"advanced_learning": "deployed"
|
|
},
|
|
"web_server": "nginx",
|
|
"api_endpoints": {
|
|
"main": "http://$AITBC1_HOST/api/",
|
|
"advanced": "http://$AITBC1_HOST/api/v1/advanced/"
|
|
}
|
|
}
|
|
},
|
|
"urls": {
|
|
"aitbc_frontend": "http://$AITBC_HOST/",
|
|
"aitbc_api": "http://$AITBC_HOST/api/",
|
|
"aitbc_advanced": "http://$AITBC_HOST/api/v1/advanced/",
|
|
"aitbc1_frontend": "http://$AITBC1_HOST/",
|
|
"aitbc1_api": "http://$AITBC1_HOST/api/",
|
|
"aitbc1_advanced": "http://$AITBC1_HOST/api/v1/advanced/"
|
|
},
|
|
"next_steps": [
|
|
"1. Monitor service performance on both servers",
|
|
"2. Test cross-server functionality",
|
|
"3. Verify load balancing if configured",
|
|
"4. Monitor system resources and scaling",
|
|
"5. Set up monitoring and alerting",
|
|
"6. Test failover scenarios"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
print_success "Deployment report saved to $report_file"
|
|
}
|
|
|
|
# Main execution
|
|
main() {
|
|
print_critical "🚀 STARTING AITBC PLATFORM DEPLOYMENT TO aitbc AND aitbc1 SERVERS"
|
|
|
|
# Run deployment steps
|
|
check_prerequisites
|
|
backup_deployment
|
|
deploy_contracts
|
|
deploy_services
|
|
deploy_frontend
|
|
deploy_configuration
|
|
verify_deployment
|
|
test_connectivity
|
|
generate_report
|
|
|
|
print_success "🎉 AITBC PLATFORM DEPLOYMENT COMPLETED!"
|
|
echo ""
|
|
echo "📊 Deployment Summary:"
|
|
echo " Servers: aitbc, aitbc1"
|
|
echo " Contracts: $DEPLOY_CONTRACTS"
|
|
echo " Services: $DEPLOY_SERVICES"
|
|
echo " Frontend: $DEPLOY_FRONTEND"
|
|
echo " Verification: $([[ "$SKIP_VERIFICATION" != "true" ]] && echo "Completed" || echo "Skipped")"
|
|
echo " Backup: $BACKUP_BEFORE_DEPLOY"
|
|
echo ""
|
|
echo "🌐 Platform URLs:"
|
|
echo " aitbc Frontend: http://$AITBC_HOST/"
|
|
echo " aitbc API: http://$AITBC_HOST/api/"
|
|
echo " aitbc Advanced: http://$AITBC_HOST/api/v1/advanced/"
|
|
echo " aitbc1 Frontend: http://$AITBC1_HOST/"
|
|
echo " aitbc1 API: http://$AITBC1_HOST/api/"
|
|
echo " aitbc1 Advanced: http://$AITBC1_HOST/api/v1/advanced/"
|
|
echo ""
|
|
echo "🔧 Next Steps:"
|
|
echo " 1. Monitor service performance on both servers"
|
|
echo " 2. Test cross-server functionality"
|
|
echo " 3. Verify load balancing if configured"
|
|
echo " 4. Monitor system resources and scaling"
|
|
echo " 5. Set up monitoring and alerting"
|
|
echo " 6. Test failover scenarios"
|
|
echo ""
|
|
echo "⚠️ Important Notes:"
|
|
echo " - Both servers are running identical configurations"
|
|
echo " - Services are managed by systemd"
|
|
echo " - Nginx is configured for reverse proxy"
|
|
echo " - Health checks are available at /health"
|
|
echo " - API endpoints are available at /api/ and /api/v1/advanced/"
|
|
echo " - Backup was created before deployment"
|
|
echo ""
|
|
echo "🎯 Deployment Status: SUCCESS - PLATFORM LIVE ON BOTH SERVERS!"
|
|
}
|
|
|
|
# Handle script interruption
|
|
trap 'print_critical "Deployment interrupted - please check partial deployment"; exit 1' INT TERM
|
|
|
|
# Run main function
|
|
main "$@"
|