#!/bin/bash # Deploy CNESST chatbot to HuggingFace Spaces # Usage: HF_TOKEN=hf_xxx HF_USERNAME=yourusername bash deploy.sh set -e HF_TOKEN="${HF_TOKEN:-$1}" HF_USERNAME="${HF_USERNAME:-$2}" SPACE_NAME="${SPACE_NAME:-cnesst-chatbot}" if [ -z "$HF_TOKEN" ] || [ -z "$HF_USERNAME" ]; then echo "Usage: HF_TOKEN=hf_xxx HF_USERNAME=yourusername bash deploy.sh" echo " or: bash deploy.sh hf_xxx yourusername" exit 1 fi SPACE_URL="https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" REPO_URL="https://${HF_USERNAME}:${HF_TOKEN}@huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" echo "🚀 Deploying CNESST chatbot to HuggingFace Spaces..." echo " Space: ${SPACE_URL}" # Create the space via API echo "📦 Creating space..." CREATE_RESPONSE=$(curl -s -X POST \ "https://huggingface.co/api/repos/create" \ -H "Authorization: Bearer ${HF_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"type\": \"space\", \"name\": \"${SPACE_NAME}\", \"private\": false, \"sdk\": \"docker\" }") echo "Create response: $CREATE_RESPONSE" # Add secrets (GROQ_API_KEY) echo "🔐 Setting GROQ_API_KEY secret..." curl -s -X POST \ "https://huggingface.co/api/spaces/${HF_USERNAME}/${SPACE_NAME}/secrets" \ -H "Authorization: Bearer ${HF_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"key\": \"GROQ_API_KEY\", \"value\": \"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\"}" echo "" echo "🔐 Setting LLM_BACKEND secret..." curl -s -X POST \ "https://huggingface.co/api/spaces/${HF_USERNAME}/${SPACE_NAME}/secrets" \ -H "Authorization: Bearer ${HF_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"key\": \"LLM_BACKEND\", \"value\": \"groq\"}" echo "" # Push git repo SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" echo "📤 Pushing to HuggingFace..." GIT_DIR="${SCRIPT_DIR}/.git" GIT_WORK_TREE="${SCRIPT_DIR}" git remote add hf "$REPO_URL" 2>/dev/null || \ GIT_DIR="${SCRIPT_DIR}/.git" GIT_WORK_TREE="${SCRIPT_DIR}" git remote set-url hf "$REPO_URL" GIT_DIR="${SCRIPT_DIR}/.git" GIT_WORK_TREE="${SCRIPT_DIR}" git push hf master:main --force echo "" echo "✅ Deployment complete!" echo " Space URL: ${SPACE_URL}" echo " Build status: ${SPACE_URL}/logs" echo "" echo "⏳ Wait 3-5 minutes for the Docker container to build..." echo " The app will be available at: ${SPACE_URL}"