163 lines
5.8 KiB
PowerShell
163 lines
5.8 KiB
PowerShell
# ========================================
|
||
# Trading Bot Deployment Script
|
||
# Windows VPS Deployment Automation
|
||
# ========================================
|
||
|
||
Write-Host "========================================" -ForegroundColor Cyan
|
||
Write-Host " Trading Bot Deployment Script v1.0" -ForegroundColor Cyan
|
||
Write-Host "========================================" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
|
||
# Deployment-Verzeichnis
|
||
$deployPath = "C:\TradingBot\placeorder"
|
||
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
|
||
$backupPath = "C:\TradingBot\backups\backup_$timestamp"
|
||
|
||
# ========================================
|
||
# SCHRITT 1: Backup erstellen
|
||
# ========================================
|
||
Write-Host "[1/5] Creating backup..." -ForegroundColor Yellow
|
||
|
||
# Erstelle Backup-Verzeichnis falls nicht vorhanden
|
||
if (!(Test-Path "C:\TradingBot\backups")) {
|
||
New-Item -ItemType Directory -Path "C:\TradingBot\backups" -Force | Out-Null
|
||
}
|
||
|
||
# Backup kritischer Dateien
|
||
$filesToBackup = @(
|
||
"trading_bot.db",
|
||
"telegram_config.json"
|
||
)
|
||
|
||
New-Item -ItemType Directory -Path $backupPath -Force | Out-Null
|
||
|
||
foreach ($file in $filesToBackup) {
|
||
if (Test-Path $file) {
|
||
Copy-Item $file -Destination "$backupPath\$file" -Force
|
||
Write-Host " ✓ Backed up: $file" -ForegroundColor Green
|
||
}
|
||
}
|
||
|
||
Write-Host " ✓ Backup created at: $backupPath" -ForegroundColor Green
|
||
Write-Host ""
|
||
|
||
# ========================================
|
||
# SCHRITT 2: Git Pull (bereits von Workflow erledigt)
|
||
# ========================================
|
||
Write-Host "[2/5] Verifying Git repository..." -ForegroundColor Yellow
|
||
|
||
if (Test-Path ".git") {
|
||
$branch = git rev-parse --abbrev-ref HEAD
|
||
$commit = git rev-parse --short HEAD
|
||
Write-Host " ✓ Branch: $branch" -ForegroundColor Green
|
||
Write-Host " ✓ Commit: $commit" -ForegroundColor Green
|
||
} else {
|
||
Write-Host " ✗ No Git repository found!" -ForegroundColor Red
|
||
exit 1
|
||
}
|
||
|
||
Write-Host ""
|
||
|
||
# ========================================
|
||
# SCHRITT 3: Python Dependencies prüfen/aktualisieren
|
||
# ========================================
|
||
Write-Host "[3/5] Checking Python dependencies..." -ForegroundColor Yellow
|
||
|
||
# Prüfe ob requirements.txt existiert
|
||
if (Test-Path "requirements.txt") {
|
||
Write-Host " Installing/Updating dependencies from requirements.txt..." -ForegroundColor Cyan
|
||
pip install --upgrade -r requirements.txt --quiet
|
||
if ($LASTEXITCODE -eq 0) {
|
||
Write-Host " ✓ Dependencies installed successfully" -ForegroundColor Green
|
||
} else {
|
||
Write-Host " ⚠ Some dependencies might have failed" -ForegroundColor Yellow
|
||
}
|
||
} else {
|
||
Write-Host " ℹ No requirements.txt found, installing common packages..." -ForegroundColor Cyan
|
||
pip install --upgrade streamlit plotly pandas MetaTrader5 --quiet
|
||
Write-Host " ✓ Common packages installed" -ForegroundColor Green
|
||
}
|
||
|
||
Write-Host ""
|
||
|
||
# ========================================
|
||
# SCHRITT 4: Services neu starten
|
||
# ========================================
|
||
Write-Host "[4/5] Restarting services..." -ForegroundColor Yellow
|
||
|
||
# Trading Dashboard Service
|
||
$dashboardService = Get-Service -Name "TradingDashboard" -ErrorAction SilentlyContinue
|
||
if ($dashboardService) {
|
||
Write-Host " Restarting TradingDashboard service..." -ForegroundColor Cyan
|
||
Restart-Service -Name "TradingDashboard" -Force
|
||
Start-Sleep -Seconds 3
|
||
|
||
$status = (Get-Service -Name "TradingDashboard").Status
|
||
if ($status -eq "Running") {
|
||
Write-Host " ✓ TradingDashboard is running" -ForegroundColor Green
|
||
} else {
|
||
Write-Host " ✗ TradingDashboard failed to start!" -ForegroundColor Red
|
||
}
|
||
} else {
|
||
Write-Host " ℹ TradingDashboard service not installed (manual start required)" -ForegroundColor Yellow
|
||
}
|
||
|
||
# Optional: Prozesse neustarten falls kein Service installiert
|
||
$streamlitProcesses = Get-Process | Where-Object {$_.ProcessName -like "*streamlit*"}
|
||
if ($streamlitProcesses) {
|
||
Write-Host " Found running Streamlit processes, restarting..." -ForegroundColor Cyan
|
||
$streamlitProcesses | Stop-Process -Force
|
||
Start-Sleep -Seconds 2
|
||
|
||
# Starte Streamlit neu (im Hintergrund)
|
||
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd '$deployPath'; streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0" -WindowStyle Minimized
|
||
Write-Host " ✓ Streamlit restarted" -ForegroundColor Green
|
||
}
|
||
|
||
Write-Host ""
|
||
|
||
# ========================================
|
||
# SCHRITT 5: Deployment-Verifikation
|
||
# ========================================
|
||
Write-Host "[5/5] Verifying deployment..." -ForegroundColor Yellow
|
||
|
||
$criticalFiles = @(
|
||
"TradingBot_V1.6_Adaptive_Complete_CORRECTED.ipynb",
|
||
"trading_dashboard.py",
|
||
"trading_database.py"
|
||
)
|
||
|
||
$allFilesExist = $true
|
||
foreach ($file in $criticalFiles) {
|
||
if (Test-Path $file) {
|
||
Write-Host " ✓ $file" -ForegroundColor Green
|
||
} else {
|
||
Write-Host " ✗ $file missing!" -ForegroundColor Red
|
||
$allFilesExist = $false
|
||
}
|
||
}
|
||
|
||
Write-Host ""
|
||
|
||
# ========================================
|
||
# DEPLOYMENT SUMMARY
|
||
# ========================================
|
||
Write-Host "========================================" -ForegroundColor Cyan
|
||
Write-Host " DEPLOYMENT SUMMARY" -ForegroundColor Cyan
|
||
Write-Host "========================================" -ForegroundColor Cyan
|
||
|
||
if ($allFilesExist) {
|
||
Write-Host "Status: SUCCESS" -ForegroundColor Green
|
||
Write-Host "Timestamp: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor White
|
||
Write-Host "Backup Location: $backupPath" -ForegroundColor White
|
||
Write-Host "Dashboard URL: http://localhost:8501" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
Write-Host "✓ Deployment completed successfully!" -ForegroundColor Green
|
||
exit 0
|
||
} else {
|
||
Write-Host "Status: FAILED" -ForegroundColor Red
|
||
Write-Host "Some critical files are missing!" -ForegroundColor Red
|
||
Write-Host "Check the logs above for details." -ForegroundColor Yellow
|
||
exit 1
|
||
}
|