# Paper Dynasty Deployment Guide ## Current Deployment Process (Shell Script) ### Quick Start From the `discord-app` directory: ```bash ./deploy.sh 1.3.0 ``` Or let it prompt you for version: ```bash ./deploy.sh ``` ### What It Does 1. **Validates version format** (X.Y or X.Y.Z) 2. **Builds Docker image** with both `latest` and version tags 3. **Pushes to Docker Hub** (manticorum67/paper-dynasty) 4. **Creates git tag** (v1.3.0) 5. **Deploys to sba-bots** via SSH 6. **Cleans up old images** ### Version Numbering - **Bug fixes**: Increment patch (1.2.0 → 1.2.1) - **New features**: Increment minor (1.2.1 → 1.3.0) - **Breaking changes**: Increment major (1.3.0 → 2.0.0) ### Examples ```bash # Deploy a bug fix ./deploy.sh 1.2.1 # Deploy a new feature ./deploy.sh 1.3.0 # Deploy with 'v' prefix (works either way) ./deploy.sh v1.3.0 ``` ### Rollback Process If something goes wrong: ```bash ssh sba-bots cd /container-data/paper-dynasty # Check available versions docker image ls | grep paper-dynasty # Update docker-compose.yml to use specific version # Change: image: manticorum67/paper-dynasty:latest # To: image: manticorum67/paper-dynasty:1.2.0 docker compose up -d ``` ## Future: Automated CI/CD (GitHub Actions + Watchtower) When ready to automate further, we'll: 1. Add GitHub Actions workflow to auto-build on git tags 2. Install Watchtower on sba-bots to auto-deploy 3. Push tags and walk away ☕ Files ready in `.github/workflows/` when you're ready to switch. ## Troubleshooting ### "Permission denied" when running script ```bash chmod +x deploy.sh ``` ### "Docker build failed" - Check Dockerfile syntax - Ensure all required files are present - Check Docker daemon is running ### "Failed to push to Docker Hub" - Verify you're logged in: `docker login` - Check Docker Hub credentials ### "SSH connection failed" - Verify SSH key is configured: `ssh sba-bots` - Check ~/.ssh/config has sba-bots entry ### Remote deployment fails but build succeeds - SSH into sba-bots manually - Check disk space: `df -h` - Check docker-compose.yml is present in `/container-data/paper-dynasty/` - Run docker compose commands manually to see error