open-navigator / scripts /huggingface /deploy-via-api.sh
jcbowyer's picture
Deploy: Consolidated gold tables, fixed nginx docs routing
896453f verified
#!/bin/bash
#
# Deploy to HuggingFace Spaces using Hub API (bypasses git binary file issues)
#
# Usage:
# ./scripts/huggingface/deploy-via-api.sh
#
set -e
echo "πŸš€ Deploying to HuggingFace Spaces via Hub API"
echo "=============================================="
# Check for HF token
if [ -z "$HUGGINGFACE_TOKEN" ]; then
echo "❌ Error: HUGGINGFACE_TOKEN not set"
echo " Export it: export HUGGINGFACE_TOKEN=your_token"
exit 1
fi
# Configuration
SPACE_ID="CommunityOne/open-navigator"
LOCAL_DIR="."
# Files/directories to upload
UPLOAD_PATTERNS=(
".huggingface/*"
"api/*"
"agents/*"
"config/*"
"discovery/*"
"extraction/*"
"frontend/dist/*"
"website/build/*"
"Dockerfile.huggingface"
"requirements.txt"
"README.md"
)
echo "πŸ“¦ Space: $SPACE_ID"
echo ""
# Use huggingface-cli to upload
python << 'PYTHON_SCRIPT'
import os
import sys
from pathlib import Path
from huggingface_hub import HfApi, upload_folder
from loguru import logger
token = os.getenv('HUGGINGFACE_TOKEN')
space_id = os.getenv('SPACE_ID', 'CommunityOne/open-navigator')
if not token:
logger.error("HUGGINGFACE_TOKEN not set")
sys.exit(1)
logger.info(f"Uploading to Space: {space_id}")
api = HfApi(token=token)
# Upload entire directory but ignore certain patterns
ignore_patterns = [
".git/*",
".git",
".venv/*",
".venv",
".venv-intel/*",
".venv-intel",
"venv/*",
"venv",
"node_modules/*",
"**/node_modules/*",
"node_modules",
"data/*", # Don't upload data files
"data/gold_old/*",
"logs/*",
".env",
".env.*",
"__pycache__/*",
"**/__pycache__/*",
"*.pyc",
".vscode/*",
".idea/*",
"*.log",
".cache/*",
"**/.cache/*",
"website/node_modules/*",
"frontend/node_modules/*",
"*.swp",
"*.swo",
"*~",
".DS_Store",
]
logger.info("Uploading files...")
logger.info(f"Ignoring: {', '.join(ignore_patterns[:5])}...")
try:
upload_folder(
folder_path=".",
repo_id=space_id,
repo_type="space",
token=token,
ignore_patterns=ignore_patterns,
commit_message="Deploy updated application via Hub API"
)
logger.success(f"βœ… Successfully deployed to {space_id}")
logger.info(f"View at: https://huggingface.co/spaces/{space_id}")
except Exception as e:
logger.error(f"❌ Deployment failed: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
PYTHON_SCRIPT
echo ""
echo "βœ… Deployment complete!"
echo "🌐 View your Space at: https://www.communityone.com"
echo "πŸ“Š Check build logs at: https://huggingface.co/spaces/$SPACE_ID"