# 📦 Deployment Package Generation This document explains how to generate deployment packages for ROA2WEB Windows deployment. ## ⚠️ Important Note The `deploy-package/` directory is **NOT** committed to git. It contains build artifacts that are generated fresh each time you build. ## 🔨 Generating Deployment Packages Use the unified build script **`Build-ROA2WEB.ps1`** to generate deployment packages: ### Build Complete Package (Recommended) ```powershell cd deployment/windows/scripts .\Build-ROA2WEB.ps1 ``` This generates a complete deployment package containing: - ✅ Frontend (Vue.js built static files) - ✅ Backend (FastAPI Python application) - ✅ Shared modules (auth, database, utils) - ✅ Telegram Bot application - ✅ Configuration templates - ✅ Deployment scripts **Output**: `deployment/windows/deploy-package/` ### Build Specific Components ```powershell # Frontend + Backend only .\Build-ROA2WEB.ps1 -Component Frontend # Backend only (no frontend build) .\Build-ROA2WEB.ps1 -Component Backend # Telegram Bot only .\Build-ROA2WEB.ps1 -Component TelegramBot ``` ### Custom Output Path ```powershell # Build to custom location with date suffix .\Build-ROA2WEB.ps1 -OutputPath "D:\deployments\roa2web-$(Get-Date -Format 'yyyyMMdd')" ``` ## 📂 Package Structure After building, `deploy-package/` will contain: ``` deploy-package/ ├── backend/ # FastAPI application files │ ├── app/ # Application code │ ├── requirements.txt # Python dependencies │ └── ... ├── frontend/ # Built Vue.js static files │ ├── assets/ # JS, CSS, fonts │ ├── index.html # Main HTML │ └── ... ├── telegram-bot/ # Telegram bot application │ ├── app/ # Bot code │ ├── requirements.txt # Bot dependencies │ └── .env.example # Configuration template ├── shared/ # Shared Python modules │ ├── auth/ # Authentication │ ├── database/ # Oracle connection pool │ └── utils/ # Utilities ├── config/ # Configuration templates │ ├── .env.production.windows │ ├── .env.production.windows.telegram │ └── web.config # IIS configuration ├── scripts/ # Deployment scripts │ ├── Install-ROA2WEB.ps1 │ ├── Install-TelegramBot.ps1 │ ├── Deploy-ROA2WEB.ps1 │ ├── Deploy-TelegramBot.ps1 │ ├── Manage-ROA2WEB.ps1 │ ├── Backup-TelegramDB.ps1 │ ├── Setup-DailyBackup.ps1 │ ├── Setup-ClaudeAuth.ps1 │ └── Enable-HTTPS.ps1 └── README.txt # Deployment instructions ``` ## 🚀 Deployment Workflow ### 1. Build Package (Development Machine) ```powershell # On WSL or development machine cd deployment/windows/scripts .\Build-ROA2WEB.ps1 ``` ### 2. Transfer to Windows Server ```powershell # Via network share Copy-Item -Path ./deploy-package -Destination \\SERVER\C$\Temp\roa2web-deploy -Recurse # Or via RDP (manual copy) ``` ### 3. Install on Server (First Time) ```powershell # On Windows Server (as Administrator) cd C:\Temp\roa2web-deploy\scripts # Install main application .\Install-ROA2WEB.ps1 # Install Telegram bot .\Install-TelegramBot.ps1 ``` ### 4. Configure & Start ```powershell # Configure environment notepad C:\inetpub\wwwroot\roa2web\backend\.env notepad C:\inetpub\wwwroot\roa2web\telegram-bot\.env # Start services .\Manage-ROA2WEB.ps1 -Action Start ``` ### 5. Deploy Updates ```powershell # Stop services .\Manage-ROA2WEB.ps1 -Action Stop # Deploy updates .\Deploy-ROA2WEB.ps1 .\Deploy-TelegramBot.ps1 # Start services .\Manage-ROA2WEB.ps1 -Action Start ``` ## 🔧 Requirements **Development Machine (for building):** - Node.js 16+ (for Frontend builds) - npm - PowerShell 5.1+ **Windows Server (for deployment):** - Windows Server 2016+ or Windows 10/11 - IIS with URL Rewrite Module - Python 3.11+ - PowerShell 5.1+ (Administrator) ## 📝 Notes - **Build artifacts are NOT version-controlled**: The `deploy-package/` directory is in `.gitignore` - **Fresh builds recommended**: Always generate a fresh package before deploying - **Virtual environments**: Not included in package (created automatically during installation) - **.env files**: Not included in package (created from templates during installation) - **Database files**: Excluded from package (SQLite for Telegram bot created on server) ## ⚙️ Advanced Options ### Transfer to Server Automatically ```powershell # Using network share (Windows) .\Build-ROA2WEB.ps1 -ServerHost "10.0.20.36" -ServerPath "C:\Temp\roa2web-deploy" ``` ### Clean Build The build script automatically cleans the output directory. To preserve existing output: ```powershell .\Build-ROA2WEB.ps1 -Clean $false ``` ## 🐛 Troubleshooting ### "Node.js not found" Install Node.js 16+ from https://nodejs.org/ ### "deploy-package already exists" The script automatically cleans old builds. If you see errors, manually delete `deploy-package/` and retry. ### Build fails with "locked files" Close VS Code, IDEs, and file explorers that might have files open in the source directories. ## 📚 Documentation - **Complete Deployment Guide**: [`docs/WINDOWS_DEPLOYMENT.md`](docs/WINDOWS_DEPLOYMENT.md) - **Script Reference**: [`scripts/README.md`](scripts/README.md) - **Quick Start**: [`README.md`](README.md) - **Project Documentation**: [`../../CLAUDE.md`](../../CLAUDE.md) ## 🔄 Migration from Old Build Scripts If you were using the old build scripts, here's the mapping: | Old Script | New Script | Equivalent Command | |------------|------------|-------------------| | `Build-Frontend.ps1` | `Build-ROA2WEB.ps1` | `.\Build-ROA2WEB.ps1 -Component Frontend` | | `Build-TelegramBot.ps1` | `Build-ROA2WEB.ps1` | `.\Build-ROA2WEB.ps1 -Component TelegramBot` | | Both scripts together | `Build-ROA2WEB.ps1` | `.\Build-ROA2WEB.ps1` (default: All) | **Note**: Old scripts are marked as DEPRECATED and will be removed in a future version. --- **Generated by**: ROA2WEB Team **Last Updated**: 2025-11-11 **Version**: 2.0 (Unified Build System)