NeahStable/scripts/verify-vercel-config.sh
2026-01-12 10:37:21 +01:00

161 lines
4.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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