MogensR's picture
Create scripts/README.md
e35e5ca
|
raw
history blame
6.79 kB

BackgroundFX Pro Scripts

Utility scripts for setup, deployment, maintenance, and monitoring of BackgroundFX Pro.

Available Scripts

setup.sh

Complete environment setup script that handles:

  • System requirements checking
  • Virtual environment creation
  • Dependency installation
  • Model downloading
  • Configuration creation
  • CLI installation

Usage:

chmod +x scripts/setup.sh
./scripts/setup.sh

deploy.sh

Deployment automation script supporting multiple environments and methods:

  • Docker deployment
  • Kubernetes deployment
  • Server deployment
  • Health checks and rollback

Usage:

# Deploy to production with Docker
./scripts/deploy.sh --env production --method docker

# Deploy to staging with specific version
./scripts/deploy.sh --env staging --version 1.2.0 --registry myregistry.com

# Deploy to Kubernetes
./scripts/deploy.sh --env production --method kubernetes

# Deploy to server (requires DEPLOY_HOST and DEPLOY_USER env vars)
export DEPLOY_HOST=server.example.com
export DEPLOY_USER=deploy
./scripts/deploy.sh --method server

benchmark.py

Performance benchmarking script for testing various aspects:

  • Image processing speed
  • Model loading times
  • Video processing performance
  • Batch processing throughput

Usage:

# Run all benchmarks
python scripts/benchmark.py

# Run specific benchmarks
python scripts/benchmark.py --tests image model

# Save results to specific file
python scripts/benchmark.py --output results.json --iterations 10

monitor.py

System monitoring script for production environments:

  • Resource usage tracking
  • Processing statistics
  • Error monitoring
  • Performance metrics

Usage:

# Start monitoring
python scripts/monitor.py

# Monitor with custom interval
python scripts/monitor.py --interval 30

# Export metrics to Prometheus
python scripts/monitor.py --export prometheus

backup.sh

Backup and restore script for data and configurations:

  • Model backups
  • Configuration backups
  • Database backups
  • Volume backups (Docker)

Usage:

# Create backup
./scripts/backup.sh create

# Restore from backup
./scripts/backup.sh restore --file backup_20240101_120000.tar.gz

# Schedule automatic backups
./scripts/backup.sh schedule --cron "0 2 * * *"

update.sh

Update script for upgrading BackgroundFX Pro:

  • Git pull latest changes
  • Update dependencies
  • Download new models
  • Database migrations
  • Rolling restart

Usage:

# Update to latest version
./scripts/update.sh

# Update to specific version
./scripts/update.sh --version 2.0.0

# Update without restart
./scripts/update.sh --no-restart

clean.sh

Cleanup script for maintenance:

  • Remove temporary files
  • Clear cache
  • Clean old logs
  • Remove unused Docker images
  • Free disk space

Usage:

# Basic cleanup
./scripts/clean.sh

# Aggressive cleanup
./scripts/clean.sh --aggressive

# Dry run (show what would be deleted)
./scripts/clean.sh --dry-run

Environment Variables

Many scripts use environment variables for configuration:

# Deployment
export DEPLOY_HOST=server.example.com
export DEPLOY_USER=deploy
export DEPLOY_KEY=/path/to/key.pem

# Docker Registry
export REGISTRY=myregistry.com
export REGISTRY_USER=username
export REGISTRY_PASS=password

# Backup
export BACKUP_DIR=/backups
export S3_BUCKET=my-backups
export AWS_ACCESS_KEY_ID=xxx
export AWS_SECRET_ACCESS_KEY=xxx

# Monitoring
export PROMETHEUS_PUSHGATEWAY=http://prometheus:9091
export SLACK_WEBHOOK=https://hooks.slack.com/xxx

Cron Jobs

Example crontab entries for automated tasks:

# Daily backup at 2 AM
0 2 * * * /opt/backgroundfx/scripts/backup.sh create

# Hourly monitoring export
0 * * * * /opt/backgroundfx/scripts/monitor.py --export prometheus

# Weekly cleanup on Sunday at 3 AM
0 3 * * 0 /opt/backgroundfx/scripts/clean.sh

# Daily model updates at 4 AM
0 4 * * * /opt/backgroundfx/scripts/update_models.py

Docker Integration

Running scripts in Docker containers:

# Run setup in container
docker run --rm -v $(pwd):/app backgroundfx-pro:latest ./scripts/setup.sh

# Run benchmark
docker run --rm --gpus all backgroundfx-pro:latest python scripts/benchmark.py

# Backup Docker volumes
docker run --rm \
  -v backgroundfx_data:/data \
  -v $(pwd)/backups:/backups \
  backgroundfx-pro:latest ./scripts/backup.sh create

CI/CD Integration

GitHub Actions

name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy to production
        env:
          DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
          DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
        run: |
          ./scripts/deploy.sh --env production --method server

GitLab CI

deploy:
  stage: deploy
  script:
    - ./scripts/deploy.sh --env production --method kubernetes
  only:
    - main

Troubleshooting

Permission Issues

# Make scripts executable
chmod +x scripts/*.sh

# Fix ownership
sudo chown -R $USER:$USER scripts/

Path Issues

# Add scripts to PATH
export PATH=$PATH:/opt/backgroundfx/scripts

# Or create symlinks
sudo ln -s /opt/backgroundfx/scripts/bgfx-deploy /usr/local/bin/

Python Scripts Not Found

# Ensure virtual environment is activated
source venv/bin/activate

# Or use full Python path
/opt/backgroundfx/venv/bin/python scripts/benchmark.py

Development

Adding New Scripts

  1. Create script in scripts/ directory
  2. Add shebang line (#!/bin/bash or #!/usr/bin/env python3)
  3. Make executable: chmod +x scripts/your_script.sh
  4. Add documentation to this README
  5. Test in Docker environment

Script Template

#!/bin/bash
# Script description
# Usage: script.sh [options]

set -e  # Exit on error

# Configuration
SCRIPT_DIR=$(dirname $(realpath $0))
PROJECT_ROOT=$(dirname $SCRIPT_DIR)

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

# Functions
show_help() {
    cat << EOF
Usage: $0 [OPTIONS]
Description of what the script does

Options:
    --help    Show this help message
EOF
}

# Main logic
main() {
    echo "Running script..."
    # Your code here
}

# Parse arguments
while [[ $# -gt 0 ]]; do
    case $1 in
        --help)
            show_help
            exit 0
            ;;
        *)
            echo "Unknown option: $1"
            show_help
            exit 1
            ;;
    esac
done

# Run main function
main

Security Considerations

  • Never commit sensitive data in scripts
  • Use environment variables for secrets
  • Validate all user inputs
  • Use set -e to exit on errors
  • Implement proper error handling
  • Log actions for audit trail
  • Restrict script permissions appropriately