# Script de déploiement automatisé pour Hugging Face Spaces (PowerShell) # Usage: .\deploy.ps1 [audio-sentiment] param( [Parameter(Mandatory=$true)] [string]$Username, [Parameter(Mandatory=$false)] [string]$SpaceName = "audio-sentiment" ) if ($SpaceName -ne "audio-sentiment") { Write-Host "[WARNING] Le nom du Space recommandé est 'audio-sentiment' (actuel: $SpaceName)" -ForegroundColor Yellow } # Couleurs pour l'affichage $Red = "Red" $Green = "Green" $Yellow = "Yellow" $Blue = "Blue" $White = "White" # Fonction pour afficher les messages function Write-Status { param([string]$Message, [string]$Color = $White) Write-Host "[INFO] $Message" -ForegroundColor $Color } function Write-Success { param([string]$Message) Write-Host "[SUCCESS] $Message" -ForegroundColor $Green } function Write-Warning { param([string]$Message) Write-Host "[WARNING] $Message" -ForegroundColor $Yellow } function Write-Error { param([string]$Message) Write-Host "[ERROR] $Message" -ForegroundColor $Red } $SpaceUrl = "https://huggingface.co/spaces/$Username/$SpaceName" Write-Status "Démarrage du déploiement pour $SpaceUrl" $Blue # 1. Vérification de la structure du projet Write-Status "Vérification de la structure du projet..." $Blue $requiredFiles = @( "app_with_api.py", "requirements_hf.txt", "README.md", ".gitattributes", "src\__init__.py", "src\transcription.py", "src\sentiment.py", "src\multimodal.py", "src\inference.py" ) $missingFiles = @() foreach ($file in $requiredFiles) { if (Test-Path $file) { Write-Host "✅ $file" -ForegroundColor $Green } else { Write-Host "❌ $file" -ForegroundColor $Red $missingFiles += $file } } if ($missingFiles.Count -gt 0) { Write-Error "Fichiers manquants: $($missingFiles -join ', ')" exit 1 } Write-Success "Structure du projet validée" # 2. Test du projet Write-Status "Exécution des tests..." $Blue if (Test-Path "test_deployment.py") { try { python test_deployment.py if ($LASTEXITCODE -ne 0) { Write-Error "Les tests ont échoué. Corrigez les problèmes avant de continuer." exit 1 } Write-Success "Tests passés avec succès" } catch { Write-Error "Erreur lors de l'exécution des tests: $_" exit 1 } } else { Write-Warning "Script de test non trouvé, passage des tests..." } # 3. Vérification de Git Write-Status "Vérification de Git..." $Blue try { git --version | Out-Null Write-Success "Git détecté" } catch { Write-Error "Git n'est pas installé ou n'est pas dans le PATH" exit 1 } # 4. Initialisation Git si nécessaire if (-not (Test-Path ".git")) { Write-Status "Initialisation du repository Git..." $Blue git init git add . git commit -m "Initial commit" Write-Success "Repository Git initialisé" } # 5. Ajout du remote Hugging Face Write-Status "Configuration du remote Hugging Face..." $Blue git remote remove hf 2>$null git remote add hf $SpaceUrl Write-Success "Remote configuré: $SpaceUrl" # 6. Préparation du commit Write-Status "Préparation du commit..." $Blue git add . try { git commit -m "Deploy: Analyse de sentiment audio v1.0" Write-Success "Commit créé" } catch { Write-Warning "Aucun changement détecté, commit ignoré" } # 7. Déploiement Write-Status "Déploiement sur Hugging Face Spaces..." $Blue $confirm = Read-Host "Voulez-vous déployer maintenant ? (y/N)" if ($confirm -ne "y" -and $confirm -ne "Y") { Write-Warning "Déploiement annulé" exit 0 } Write-Status "Poussage du code..." $Blue try { git push hf main Write-Success "Code poussé avec succès" } catch { Write-Error "Erreur lors du push vers Hugging Face: $_" exit 1 } Write-Success "Déploiement terminé avec succès !" Write-Success "Votre Space est accessible à: $SpaceUrl" Write-Host "" Write-Status "Instructions post-déploiement:" $Blue Write-Host "1. Allez sur $SpaceUrl" -ForegroundColor $White Write-Host "2. Attendez que le build se termine (peut prendre 5-10 minutes)" -ForegroundColor $White Write-Host "3. Testez votre application" -ForegroundColor $White Write-Host "4. Consultez les logs en cas de problème" -ForegroundColor $White Write-Status "Vérification du statut du Space..." $Blue Write-Host "Vous pouvez vérifier le statut à: $SpaceUrl" -ForegroundColor $White Write-Success "Script de déploiement terminé !" Read-Host "Appuyez sur Entrée pour continuer"