Spaces:
Running
Running
| # Deploy Gapura AI to Hugging Face Spaces | |
| set -e | |
| HF_USERNAME=${1:-ridzki-nrzngr} | |
| SPACE_NAME=${2:-gapura-ai} | |
| SKIP_MODELS=${3:-false} | |
| echo "=== Deploying to Hugging Face Spaces ===" | |
| echo "Username: $HF_USERNAME" | |
| echo "Space: $SPACE_NAME" | |
| echo "Skip models: $SKIP_MODELS" | |
| echo "" | |
| # Check if huggingface-cli is installed | |
| if ! command -v hf &> /dev/null; then | |
| echo "Installing huggingface-hub..." | |
| pip install huggingface-hub | |
| fi | |
| # Check if logged in | |
| if ! hf auth whoami &> /dev/null; then | |
| echo "" | |
| echo "Please login to Hugging Face:" | |
| echo " hf auth login" | |
| echo "" | |
| echo "You need a HF token from: https://huggingface.co/settings/tokens" | |
| exit 1 | |
| fi | |
| # Create temp directory for deployment | |
| DEPLOY_DIR=$(mktemp -d) | |
| echo "Creating deployment package in $DEPLOY_DIR..." | |
| # Copy necessary files | |
| cp -r api $DEPLOY_DIR/ | |
| cp -r data $DEPLOY_DIR/ | |
| cp -r scripts $DEPLOY_DIR/ | |
| cp -r training $DEPLOY_DIR/ | |
| # Use HF-specific requirements to include huggingface-hub | |
| cp hf-space/requirements.txt $DEPLOY_DIR/requirements.txt | |
| mkdir -p $DEPLOY_DIR/scripts | |
| cp hf-space/scripts/start.sh $DEPLOY_DIR/scripts/start.sh | |
| date -u +"%Y-%m-%dT%H:%M:%SZ" > $DEPLOY_DIR/BUILD_INFO.txt | |
| if [ "$SKIP_MODELS" != "true" ]; then | |
| mkdir -p $DEPLOY_DIR/models/regression | |
| mkdir -p $DEPLOY_DIR/models/nlp/severity_classifier | |
| if [ -f "models/regression/resolution_predictor_latest.pkl" ]; then | |
| cp models/regression/resolution_predictor_latest.pkl $DEPLOY_DIR/models/regression/ | |
| cp models/regression/resolution_predictor_latest_metrics.json $DEPLOY_DIR/models/regression/ 2>/dev/null || true | |
| cp models/regression/shap_explainer.pkl $DEPLOY_DIR/models/regression/ 2>/dev/null || true | |
| cp models/regression/anomaly_stats.pkl $DEPLOY_DIR/models/regression/ 2>/dev/null || true | |
| echo " ✓ Regression model" | |
| fi | |
| if [ -d "models/nlp/severity_classifier" ]; then | |
| cp models/nlp/severity_classifier/*.pkl $DEPLOY_DIR/models/nlp/severity_classifier/ | |
| cp models/nlp/severity_classifier/config.json $DEPLOY_DIR/models/nlp/severity_classifier/ 2>/dev/null || true | |
| echo " ✓ NLP model (TF-IDF + RandomForest)" | |
| fi | |
| else | |
| echo " ⚠️ Skipping model files to reduce upload size" | |
| mkdir -p $DEPLOY_DIR/models | |
| echo "placeholder" > $DEPLOY_DIR/models/.keep | |
| fi | |
| # Copy Dockerfile | |
| cp hf-space/Dockerfile $DEPLOY_DIR/ | |
| cp hf-space/README.md $DEPLOY_DIR/ | |
| # Create .env.example | |
| cat > $DEPLOY_DIR/.env.example << 'EOF' | |
| # Google Sheets Configuration | |
| GOOGLE_SERVICE_ACCOUNT_EMAIL=your-service@project.iam.gserviceaccount.com | |
| GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n" | |
| GOOGLE_SHEET_ID=your-google-sheet-id | |
| # Optional: For faster model downloads | |
| # HF_TOKEN=your-huggingface-token | |
| EOF | |
| echo " ✓ Configuration files" | |
| # Show what will be uploaded | |
| echo "" | |
| echo "Files to upload:" | |
| find $DEPLOY_DIR -type f | head -20 | |
| echo "" | |
| echo "Total size: $(du -sh $DEPLOY_DIR | cut -f1)" | |
| # Upload to Hugging Face | |
| echo "" | |
| echo "Uploading to Hugging Face Spaces..." | |
| cd $DEPLOY_DIR | |
| # Create repo if not exists | |
| export HF_HUB_TIMEOUT=600 | |
| hf repo create $SPACE_NAME --repo-type space --space-sdk docker --exist-ok || true | |
| # Upload files | |
| hf upload $HF_USERNAME/$SPACE_NAME . . --repo-type space | |
| echo "" | |
| echo "✓ Deployment complete!" | |
| echo "" | |
| echo "Your Space: https://huggingface.co/spaces/$HF_USERNAME/$SPACE_NAME" | |
| echo "" | |
| echo "IMPORTANT: Go to your Space Settings > Repository secrets and add:" | |
| echo " - GOOGLE_SERVICE_ACCOUNT_EMAIL" | |
| echo " - GOOGLE_PRIVATE_KEY" | |
| echo " - GOOGLE_SHEET_ID" | |
| echo "" | |
| # Cleanup | |
| rm -rf $DEPLOY_DIR | |