Kraft102's picture
fix: update huggingface cli commands to 'hf' and ensure correct installation
e099a9d
name: Deploy to Hugging Face Spaces
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy-to-hf-spaces:
name: Deploy Backend to HF Spaces
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install huggingface_hub
run: pip install huggingface_hub
- name: Login to HuggingFace
run: hf auth login --token $HF_TOKEN
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
- name: Prepare deployment files
env:
HF_SPACE_NAME: ${{ secrets.HF_SPACE_NAME }}
run: |
set -e
echo "Creating deployment directory..."
mkdir -p hf-deploy
# Copy backend and required packages
echo "Copying backend files..."
mkdir -p hf-deploy/apps/backend
cp -r apps/backend/src hf-deploy/apps/backend/
cp -r apps/backend/prisma hf-deploy/apps/backend/
cp apps/backend/package.json hf-deploy/apps/backend/
cp apps/backend/package-lock.json hf-deploy/apps/backend/ 2>/dev/null || true
cp apps/backend/tsconfig.json hf-deploy/apps/backend/
# Copy shared packages
echo "Copying shared packages..."
mkdir -p hf-deploy/packages/domain-types
cp -r packages/domain-types/src hf-deploy/packages/domain-types/
cp packages/domain-types/package.json hf-deploy/packages/domain-types/
cp packages/domain-types/tsconfig.json hf-deploy/packages/domain-types/
mkdir -p hf-deploy/packages/mcp-types
cp -r packages/mcp-types/src hf-deploy/packages/mcp-types/
cp packages/mcp-types/package.json hf-deploy/packages/mcp-types/
cp packages/mcp-types/tsconfig.json hf-deploy/packages/mcp-types/
# Copy root config
echo "Copying root config..."
cp package.json hf-deploy/
cp package-lock.json hf-deploy/ 2>/dev/null || true
cp tsconfig.json hf-deploy/ 2>/dev/null || true
# Copy Dockerfile
echo "Copying Dockerfile..."
if [ -f scripts/hf-backend.dockerfile ]; then
cp scripts/hf-backend.dockerfile hf-deploy/Dockerfile
elif [ -f Dockerfile ]; then
cp Dockerfile hf-deploy/
fi
# Clean unwanted files
echo "Cleaning unwanted files..."
find hf-deploy -name "*.pdf" -delete 2>/dev/null || true
find hf-deploy -name "*.db*" -delete 2>/dev/null || true
find hf-deploy -name "*.sqlite" -delete 2>/dev/null || true
find hf-deploy -name "*.log" -delete 2>/dev/null || true
find hf-deploy -name "node_modules" -type d -exec rm -rf {} + 2>/dev/null || true
find hf-deploy -name "dist" -type d -exec rm -rf {} + 2>/dev/null || true
# Create README.md
echo "Creating README..."
echo "---" > hf-deploy/README.md
echo "title: WidgeTDC Cortex" >> hf-deploy/README.md
echo "emoji: 🧠" >> hf-deploy/README.md
echo "colorFrom: blue" >> hf-deploy/README.md
echo "colorTo: purple" >> hf-deploy/README.md
echo "sdk: docker" >> hf-deploy/README.md
echo "app_port: 7860" >> hf-deploy/README.md
echo "hardware: t4-small" >> hf-deploy/README.md
echo "---" >> hf-deploy/README.md
echo "" >> hf-deploy/README.md
echo "# WidgeTDC Cortex - Neural Backend" >> hf-deploy/README.md
echo "" >> hf-deploy/README.md
echo "Enterprise AI backend with GPU-accelerated embeddings and MCP agents." >> hf-deploy/README.md
echo "" >> hf-deploy/README.md
echo "## Features" >> hf-deploy/README.md
echo "- GPU-accelerated embeddings via sentence-transformers" >> hf-deploy/README.md
echo "- MCP (Model Context Protocol) tool execution" >> hf-deploy/README.md
echo "- Real-time WebSocket communication" >> hf-deploy/README.md
echo "- Health monitoring at /health endpoint" >> hf-deploy/README.md
# Verify structure
echo "Verifying structure..."
ls -la hf-deploy/
ls -la hf-deploy/apps/backend/ || echo "Backend missing!"
- name: Create HuggingFace Space (if not exists)
env:
HF_SPACE_NAME: ${{ secrets.HF_SPACE_NAME }}
run: |
echo "Creating/verifying Space: $HF_SPACE_NAME"
# Try to create Space (will fail if exists, which is OK)
hf repo create $HF_SPACE_NAME --type space --space_sdk docker || echo "Space already exists or creation failed - continuing..."
echo "✅ Space ready"
- name: Upload to HuggingFace Space
env:
HF_SPACE_NAME: ${{ secrets.HF_SPACE_NAME }}
run: |
set -e
echo "Uploading to HuggingFace Space: $HF_SPACE_NAME"
# Use HF CLI to upload entire folder
hf upload \
"$HF_SPACE_NAME" \
./hf-deploy \
. \
--repo-type=space \
--commit-message="Deploy from GitHub Actions $(date +%Y-%m-%d_%H-%M-%S)" \
|| {
echo "::error::Upload failed - check HF_TOKEN permissions and Space name"
exit 1
}
echo "✅ Deployment successful!"
echo "Space URL: https://huggingface.co/spaces/$HF_SPACE_NAME"
echo "::notice::Deployment complete - Space will build Docker image (5-10 min)"