161 lines
4.9 KiB
Bash
Executable File
161 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# Script de vérification de la configuration pour Vercel
|
||
# Usage: ./scripts/verify-vercel-config.sh
|
||
|
||
set -e
|
||
|
||
# Couleurs
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m'
|
||
|
||
echo -e "${BLUE}🔍 Vérification de la configuration pour Vercel${NC}"
|
||
echo ""
|
||
|
||
ERRORS=0
|
||
WARNINGS=0
|
||
|
||
# Fonction pour vérifier une variable d'environnement
|
||
check_env_var() {
|
||
local var_name=$1
|
||
local required=${2:-false}
|
||
|
||
if [ -z "${!var_name}" ]; then
|
||
if [ "$required" = true ]; then
|
||
echo -e "${RED}❌ ${var_name} n'est pas définie (OBLIGATOIRE)${NC}"
|
||
ERRORS=$((ERRORS + 1))
|
||
else
|
||
echo -e "${YELLOW}⚠️ ${var_name} n'est pas définie (optionnelle)${NC}"
|
||
WARNINGS=$((WARNINGS + 1))
|
||
fi
|
||
else
|
||
echo -e "${GREEN}✅ ${var_name} est définie${NC}"
|
||
fi
|
||
}
|
||
|
||
# Charger les variables d'environnement depuis .env.local si présent
|
||
if [ -f .env.local ]; then
|
||
echo -e "${BLUE}📄 Chargement de .env.local...${NC}"
|
||
set -a
|
||
source .env.local
|
||
set +a
|
||
fi
|
||
|
||
echo -e "${BLUE}📋 Vérification des variables d'environnement critiques:${NC}"
|
||
echo ""
|
||
|
||
# Variables obligatoires
|
||
check_env_var "NODE_ENV" true
|
||
check_env_var "NEXTAUTH_URL" true
|
||
check_env_var "NEXTAUTH_SECRET" true
|
||
check_env_var "DATABASE_URL" true
|
||
|
||
echo ""
|
||
echo -e "${BLUE}🔐 Vérification de l'authentification Keycloak:${NC}"
|
||
check_env_var "KEYCLOAK_BASE_URL" true
|
||
check_env_var "KEYCLOAK_REALM" true
|
||
check_env_var "KEYCLOAK_CLIENT_ID" true
|
||
check_env_var "KEYCLOAK_CLIENT_SECRET" true
|
||
check_env_var "KEYCLOAK_ISSUER" false
|
||
check_env_var "NEXT_PUBLIC_KEYCLOAK_ISSUER" false
|
||
|
||
echo ""
|
||
echo -e "${BLUE}💾 Vérification de la base de données:${NC}"
|
||
if [ -n "$DATABASE_URL" ]; then
|
||
if [[ "$DATABASE_URL" == postgresql://* ]]; then
|
||
echo -e "${GREEN}✅ DATABASE_URL semble être une URL PostgreSQL valide${NC}"
|
||
|
||
# Vérifier si SSL est activé (recommandé pour la production)
|
||
if [[ "$DATABASE_URL" != *"sslmode=require"* ]] && [[ "$DATABASE_URL" != *"sslmode=prefer"* ]]; then
|
||
echo -e "${YELLOW}⚠️ DATABASE_URL ne contient pas sslmode=require (recommandé pour la production)${NC}"
|
||
WARNINGS=$((WARNINGS + 1))
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ DATABASE_URL ne semble pas être une URL PostgreSQL valide${NC}"
|
||
ERRORS=$((ERRORS + 1))
|
||
fi
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${BLUE}🔴 Vérification de Redis (optionnel):${NC}"
|
||
check_env_var "REDIS_URL" false
|
||
if [ -z "$REDIS_URL" ]; then
|
||
check_env_var "REDIS_HOST" false
|
||
check_env_var "REDIS_PORT" false
|
||
fi
|
||
check_env_var "REDIS_ENCRYPTION_KEY" false
|
||
|
||
echo ""
|
||
echo -e "${BLUE}🔧 Vérification des intégrations (optionnelles):${NC}"
|
||
check_env_var "LEANTIME_API_URL" false
|
||
check_env_var "LEANTIME_TOKEN" false
|
||
check_env_var "ROCKET_CHAT_TOKEN" false
|
||
check_env_var "ROCKET_CHAT_USER_ID" false
|
||
check_env_var "N8N_API_KEY" false
|
||
check_env_var "DOLIBARR_API_URL" false
|
||
check_env_var "DOLIBARR_API_KEY" false
|
||
|
||
echo ""
|
||
echo -e "${BLUE}📦 Vérification de la configuration Next.js:${NC}"
|
||
|
||
# Vérifier que next.config.mjs existe
|
||
if [ -f "next.config.mjs" ]; then
|
||
echo -e "${GREEN}✅ next.config.mjs existe${NC}"
|
||
|
||
# Vérifier que Turbopack n'est pas forcé en production
|
||
if grep -q "turbopack:" next.config.mjs && [ "$NODE_ENV" = "production" ]; then
|
||
echo -e "${YELLOW}⚠️ Turbopack est activé dans next.config.mjs (peut causer des problèmes sur Vercel)${NC}"
|
||
WARNINGS=$((WARNINGS + 1))
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ next.config.mjs n'existe pas${NC}"
|
||
ERRORS=$((ERRORS + 1))
|
||
fi
|
||
|
||
# Vérifier package.json
|
||
if [ -f "package.json" ]; then
|
||
echo -e "${GREEN}✅ package.json existe${NC}"
|
||
|
||
# Vérifier que le script build existe
|
||
if grep -q '"build"' package.json; then
|
||
echo -e "${GREEN}✅ Script 'build' trouvé dans package.json${NC}"
|
||
else
|
||
echo -e "${RED}❌ Script 'build' manquant dans package.json${NC}"
|
||
ERRORS=$((ERRORS + 1))
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ package.json n'existe pas${NC}"
|
||
ERRORS=$((ERRORS + 1))
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${BLUE}🧪 Test de build (simulation):${NC}"
|
||
if command -v npm &> /dev/null; then
|
||
echo -e "${YELLOW}ℹ️ Pour tester le build réellement, exécutez: npm run build${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ npm n'est pas installé, impossible de tester le build${NC}"
|
||
WARNINGS=$((WARNINGS + 1))
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${BLUE}📊 Résumé:${NC}"
|
||
echo -e " ${GREEN}✅ Variables correctes${NC}"
|
||
if [ $WARNINGS -gt 0 ]; then
|
||
echo -e " ${YELLOW}⚠️ $WARNINGS avertissement(s)${NC}"
|
||
fi
|
||
if [ $ERRORS -gt 0 ]; then
|
||
echo -e " ${RED}❌ $ERRORS erreur(s)${NC}"
|
||
echo ""
|
||
echo -e "${RED}❌ La configuration n'est pas prête pour Vercel${NC}"
|
||
exit 1
|
||
else
|
||
echo ""
|
||
echo -e "${GREEN}✅ Configuration prête pour Vercel${NC}"
|
||
if [ $WARNINGS -gt 0 ]; then
|
||
echo -e "${YELLOW}⚠️ Vérifiez les avertissements ci-dessus${NC}"
|
||
fi
|
||
exit 0
|
||
fi
|