Spaces:
Sleeping
Sleeping
| # Script de déploiement automatisé pour HuggingFace Spaces | |
| # Usage: ./deploy.sh | |
| set -e # Exit on error | |
| # Colors for output | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| BLUE='\033[0;34m' | |
| NC='\033[0m' # No Color | |
| # Configuration | |
| SPACE_URL="https://huggingface.co/spaces/rinogeek/VirtualLabo" | |
| REPO_PATH="${1:-.}" | |
| COMMIT_MSG="${2:-'Update: Automated deployment'}" | |
| echo -e "${BLUE}╔════════════════════════════════════════════╗${NC}" | |
| echo -e "${BLUE}║ Virtual Labo Chimique - Deploy Script ║${NC}" | |
| echo -e "${BLUE}╚════════════════════════════════════════════╝${NC}" | |
| echo "" | |
| # Check if git is installed | |
| if ! command -v git &> /dev/null; then | |
| echo -e "${RED}✗ Git is not installed${NC}" | |
| exit 1 | |
| fi | |
| # Navigate to repo path | |
| if [ ! -d "$REPO_PATH" ]; then | |
| echo -e "${RED}✗ Directory not found: $REPO_PATH${NC}" | |
| exit 1 | |
| fi | |
| cd "$REPO_PATH" | |
| echo -e "${GREEN}✓ Working directory: $(pwd)${NC}" | |
| echo "" | |
| # Check if Dockerfile exists | |
| if [ ! -f "Dockerfile" ]; then | |
| echo -e "${RED}✗ Dockerfile not found in $REPO_PATH${NC}" | |
| exit 1 | |
| fi | |
| echo -e "${GREEN}✓ Dockerfile found${NC}" | |
| # Check if server.js exists | |
| if [ ! -f "server.js" ]; then | |
| echo -e "${RED}✗ server.js not found in $REPO_PATH${NC}" | |
| exit 1 | |
| fi | |
| echo -e "${GREEN}✓ server.js found${NC}" | |
| # Check if package.json exists | |
| if [ ! -f "package.json" ]; then | |
| echo -e "${RED}✗ package.json not found in $REPO_PATH${NC}" | |
| exit 1 | |
| fi | |
| echo -e "${GREEN}✓ package.json found${NC}" | |
| echo "" | |
| echo -e "${YELLOW}Testing Docker build locally...${NC}" | |
| if command -v docker &> /dev/null; then | |
| echo "Building Docker image..." | |
| if docker build -t virtual-labo-test . > /dev/null 2>&1; then | |
| echo -e "${GREEN}✓ Docker build successful${NC}" | |
| else | |
| echo -e "${YELLOW}⚠ Docker build failed (continuing anyway)${NC}" | |
| fi | |
| else | |
| echo -e "${YELLOW}⚠ Docker not installed (skipping Docker test)${NC}" | |
| fi | |
| echo "" | |
| echo -e "${YELLOW}Preparing Git repository...${NC}" | |
| # Check git status | |
| if [ -z "$(git status --porcelain)" ]; then | |
| echo -e "${YELLOW}⚠ No changes detected${NC}" | |
| read -p "Continue anyway? (y/n) " -n 1 -r | |
| echo | |
| if [[ ! $REPLY =~ ^[Yy]$ ]]; then | |
| echo -e "${RED}✗ Deployment cancelled${NC}" | |
| exit 1 | |
| fi | |
| fi | |
| # Check if we're in a git repo | |
| if [ ! -d ".git" ]; then | |
| echo -e "${RED}✗ Not a git repository${NC}" | |
| echo "Initialize git repo first:" | |
| echo " git init" | |
| echo " git add ." | |
| echo " git commit -m 'Initial commit'" | |
| exit 1 | |
| fi | |
| echo "" | |
| echo -e "${YELLOW}Current status:${NC}" | |
| git status --short | head -10 || true | |
| echo "" | |
| echo -e "${YELLOW}Git log (last 3 commits):${NC}" | |
| git log --oneline -3 || true | |
| echo "" | |
| echo -e "${BLUE}═══════════════════════════════════════════${NC}" | |
| echo -e "${YELLOW}Deployment Summary:${NC}" | |
| echo -e " Space URL: $SPACE_URL" | |
| echo -e " Repo Path: $REPO_PATH" | |
| echo -e " Commit: $COMMIT_MSG" | |
| echo -e "${BLUE}═══════════════════════════════════════════${NC}" | |
| echo "" | |
| # Confirmation | |
| read -p "Proceed with deployment? (y/n) " -n 1 -r | |
| echo | |
| if [[ ! $REPLY =~ ^[Yy]$ ]]; then | |
| echo -e "${RED}✗ Deployment cancelled${NC}" | |
| exit 1 | |
| fi | |
| echo "" | |
| echo -e "${YELLOW}Staging changes...${NC}" | |
| git add . || true | |
| echo -e "${GREEN}✓ Changes staged${NC}" | |
| echo "" | |
| echo -e "${YELLOW}Creating commit...${NC}" | |
| if git commit -m "$COMMIT_MSG" 2>/dev/null; then | |
| echo -e "${GREEN}✓ Commit created${NC}" | |
| else | |
| echo -e "${YELLOW}⚠ No new changes to commit${NC}" | |
| fi | |
| echo "" | |
| echo -e "${YELLOW}Pushing to origin...${NC}" | |
| if git push origin main 2>/dev/null || git push origin master 2>/dev/null; then | |
| echo -e "${GREEN}✓ Changes pushed successfully${NC}" | |
| else | |
| echo -e "${RED}✗ Failed to push changes${NC}" | |
| echo "Try manual push: git push origin main" | |
| exit 1 | |
| fi | |
| echo "" | |
| echo -e "${BLUE}═══════════════════════════════════════════${NC}" | |
| echo -e "${GREEN}✓ Deployment initiated successfully!${NC}" | |
| echo -e "${BLUE}═══════════════════════════════════════════${NC}" | |
| echo "" | |
| echo -e "Next steps:" | |
| echo -e " 1. Visit: ${YELLOW}$SPACE_URL${NC}" | |
| echo -e " 2. Check the build logs" | |
| echo -e " 3. Your app will be live in a few minutes" | |
| echo "" | |
| echo -e "Return to HuggingFace to see:" | |
| echo -e " - Build logs: Space Settings → Build logs" | |
| echo -e " - Status: Check top-right corner" | |
| echo -e " - Application: Live at the Space URL" | |
| echo "" | |
| # Wait for user to check | |
| read -p "Press Enter to finish..." | |
| echo -e "${GREEN}✓ Done!${NC}" | |