4NK_env/scripts/clone-all-repos.sh
2025-09-22 15:45:47 +00:00

166 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
echo "🔄 SCRIPT DE CLONAGE GIT - ENVIRONNEMENT DE DÉVELOPPEMENT 4NK"
echo "Avec contexte et outillage complet pour les agents IA"
echo "====================================================="
# Fonction de logging
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Configuration Git
GIT_BASE_URL="git@git.4nkweb.com:4nk"
BRANCH="ext"
BASE_DIR="/home/debian/4NK_env"
# Liste des projets à cloner
declare -a PROJECTS=(
"lecoffre_node"
"sdk_relay"
"sdk_signer"
"sdk_storage"
"sdk_client"
"sdk_common"
"sdk-signer-client"
"ihm_client"
"lecoffre-front"
"doc_api"
"IA_agents"
)
log "📋 Dépôts 4NK et LeCoffre à cloner sur la branche '$BRANCH':"
echo " 🔧 Dépôts 4NK (SDK, services):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == sdk_* ]] || [[ "$project" == "doc_api" ]]; then
echo " - $project"
fi
done
echo " 🏠 Dépôts LeCoffre (applications):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == lecoffre_* ]] || [[ "$project" == "ihm_client" ]]; then
echo " - $project"
fi
done
echo " 🧠 Agents IA (contexte et outillage):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == "IA_agents" ]]; then
echo " - $project (contexte complet pour agents IA)"
fi
done
echo ""
log "🔧 Configuration Git SSH..."
if ! ssh -T git@git.4nkweb.com 2>&1 | grep -q "successfully authenticated"; then
echo "❌ Erreur: Clé SSH non configurée pour git.4nkweb.com"
echo " Vérifiez votre configuration SSH et vos clés"
exit 1
fi
log "✅ Clé SSH configurée"
log "📁 Vérification du répertoire de base: $BASE_DIR"
if [ ! -d "$BASE_DIR" ]; then
log "❌ Répertoire $BASE_DIR introuvable"
exit 1
fi
cd "$BASE_DIR"
log "🔄 Début du clonage des projets..."
echo ""
for project in "${PROJECTS[@]}"; do
log "📦 Clonage de $project..."
# URL du projet
PROJECT_URL="$GIT_BASE_URL/$project.git"
# Vérifier si le dossier existe déjà
if [ -d "$project" ]; then
log "⚠️ Le dossier '$project' existe déjà"
log " Sauvegarde dans '$project.backup'"
mv "$project" "$project.backup"
fi
# Cloner le projet sur la branche ext
log " Clonage depuis: $PROJECT_URL"
log " Branche: $BRANCH"
if git clone -b "$BRANCH" "$PROJECT_URL" "$project"; then
log "$project cloné avec succès"
# Afficher les informations du repo
cd "$project"
log " Dernier commit: $(git log -1 --oneline)"
log " Branche: $(git branch --show-current)"
cd ..
else
log "❌ Échec du clonage de $project"
# Restaurer la sauvegarde si elle existe
if [ -d "$project.backup" ]; then
log " Restauration de la sauvegarde..."
mv "$project.backup" "$project"
fi
fi
echo ""
done
log "🎉 Clonage de l'environnement de développement terminé !"
log "📊 Résumé des dépôts clonés:"
echo ""
echo "Dépôts clonés sur la branche '$BRANCH':"
echo "======================================="
echo "🔧 Dépôts 4NK (SDK, services):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == sdk_* ]] || [[ "$project" == "doc_api" ]]; then
if [ -d "$project" ]; then
echo "$project"
else
echo "$project (échec)"
fi
fi
done
echo "🏠 Dépôts LeCoffre (applications):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == lecoffre_* ]] || [[ "$project" == "ihm_client" ]]; then
if [ -d "$project" ]; then
echo "$project"
else
echo "$project (échec)"
fi
fi
done
echo "🧠 Agents IA (contexte et outillage):"
for project in "${PROJECTS[@]}"; do
if [[ "$project" == "IA_agents" ]]; then
if [ -d "$project" ]; then
echo "$project (contexte complet pour agents IA)"
else
echo "$project (échec - contexte agents IA manquant)"
fi
fi
done
echo ""
log "🔍 Vérification des branches:"
for project in "${PROJECTS[@]}"; do
if [ -d "$project" ]; then
cd "$project"
current_branch=$(git branch --show-current)
echo " $project: $current_branch"
cd ..
fi
done
echo ""
log "📝 Prochaines étapes:"
echo " 1. Vérifier que tous les dépôts sont sur la branche '$BRANCH'"
echo " 2. Configurer les fichiers .gitignore et .dockerignore"
echo " 3. Initialiser le dépôt 4NK_env"
echo " 4. Pousser sur git.4nkweb.com"
echo " 5. Déployer LeCoffre avec l'architecture autonome"
echo " 6. Utiliser le contexte et outillage des agents IA (IA_agents/)"