Amélioration du script check-config.sh pour gérer automatiquement le clonage et la mise à jour des repositories NationsGlory_ServeurBuild_Red et WebNationsGlory_ServeurBuild_Red. Nouveautés: - Clone automatique si repositories absents - Pull automatique si mises à jour disponibles - Détection de conflits et modifications locales - Configuration via repos.conf (template fourni) - Documentation dans GIT_SYNC.md Permet un déploiement simplifié sur nouvelle machine et des mises à jour automatisées en production.
226 lines
5.2 KiB
Markdown
226 lines
5.2 KiB
Markdown
# 🔄 Synchronisation Git Automatique
|
|
|
|
Le script `check-config.sh` a été amélioré pour gérer automatiquement la synchronisation des repositories Git.
|
|
|
|
## 🎯 Fonctionnalités
|
|
|
|
### 1. Clonage automatique
|
|
|
|
Si les dossiers `NationsGlory_ServeurBuild_Red` ou `WebNationsGlory_ServeurBuild_Red` n'existent pas, le script les clone automatiquement depuis les URLs configurées.
|
|
|
|
### 2. Mise à jour automatique
|
|
|
|
Si les repositories existent déjà, le script :
|
|
- ✅ Vérifie si des mises à jour sont disponibles
|
|
- ✅ Met à jour automatiquement si possible
|
|
- ⚠️ Vous avertit si vous avez des modifications locales
|
|
|
|
### 3. Détection de conflits
|
|
|
|
Le script détecte :
|
|
- Modifications locales non commitées
|
|
- Différences entre la version locale et distante
|
|
- Problèmes de connexion Git
|
|
|
|
## ⚙️ Configuration
|
|
|
|
### Fichier `repos.conf`
|
|
|
|
Créez ce fichier pour configurer les URLs de vos repositories :
|
|
|
|
```bash
|
|
cp repos.conf.example repos.conf
|
|
nano repos.conf
|
|
```
|
|
|
|
### Exemples de configuration
|
|
|
|
**Git sur serveur local (SSH) :**
|
|
```bash
|
|
MC_SERVER_REPO="git@192.168.1.195:/srv/git/NationsGlory_ServeurBuild_Red.git"
|
|
WEB_ADMIN_REPO="git@192.168.1.195:/srv/git/WebNationsGlory_ServeurBuild_Red.git"
|
|
DEFAULT_BRANCH="main"
|
|
```
|
|
|
|
**GitHub (SSH) :**
|
|
```bash
|
|
MC_SERVER_REPO="git@github.com:username/NationsGlory_ServeurBuild_Red.git"
|
|
WEB_ADMIN_REPO="git@github.com:username/WebNationsGlory_ServeurBuild_Red.git"
|
|
DEFAULT_BRANCH="main"
|
|
```
|
|
|
|
**GitHub (HTTPS) :**
|
|
```bash
|
|
MC_SERVER_REPO="https://github.com/username/NationsGlory_ServeurBuild_Red.git"
|
|
WEB_ADMIN_REPO="https://github.com/username/WebNationsGlory_ServeurBuild_Red.git"
|
|
DEFAULT_BRANCH="main"
|
|
```
|
|
|
|
## 🚀 Utilisation
|
|
|
|
### Premier déploiement
|
|
|
|
```bash
|
|
# 1. Configurer les URLs Git
|
|
cp repos.conf.example repos.conf
|
|
nano repos.conf
|
|
|
|
# 2. Cloner et vérifier
|
|
./check-config.sh
|
|
|
|
# 3. Déployer
|
|
./deploy.sh
|
|
```
|
|
|
|
### Mise à jour
|
|
|
|
```bash
|
|
# Vérifier et mettre à jour
|
|
./check-config.sh
|
|
|
|
# Si des mises à jour sont disponibles
|
|
./stop.sh
|
|
./deploy.sh
|
|
```
|
|
|
|
## 📋 Comportement du script
|
|
|
|
### Cas 1 : Repository n'existe pas
|
|
|
|
```
|
|
[→] Clonage de NationsGlory Serveur MC depuis git@...
|
|
[✓] NationsGlory Serveur MC cloné avec succès
|
|
```
|
|
|
|
### Cas 2 : Repository à jour
|
|
|
|
```
|
|
[INFO] Repository NationsGlory Serveur MC existe, vérification des mises à jour...
|
|
[✓] NationsGlory Serveur MC est à jour
|
|
```
|
|
|
|
### Cas 3 : Mise à jour disponible
|
|
|
|
```
|
|
[INFO] Repository NationsGlory Serveur MC existe, vérification des mises à jour...
|
|
[→] Mise à jour de NationsGlory Serveur MC disponible...
|
|
[→] Mise à jour de NationsGlory Serveur MC...
|
|
[✓] NationsGlory Serveur MC mis à jour avec succès
|
|
```
|
|
|
|
### Cas 4 : Modifications locales
|
|
|
|
```
|
|
[INFO] Repository NationsGlory Serveur MC existe, vérification des mises à jour...
|
|
[→] Mise à jour de NationsGlory Serveur MC disponible...
|
|
[⚠] NationsGlory Serveur MC a des modifications locales non commitées
|
|
[INFO] Pour mettre à jour, committez ou annulez vos modifications
|
|
```
|
|
|
|
## 🔐 Configuration SSH
|
|
|
|
### Pour un serveur Git local
|
|
|
|
1. **Générer une clé SSH** (si vous n'en avez pas) :
|
|
```bash
|
|
ssh-keygen -t ed25519 -C "votre@email.com"
|
|
```
|
|
|
|
2. **Copier la clé sur le serveur Git** :
|
|
```bash
|
|
ssh-copy-id user@192.168.1.195
|
|
```
|
|
|
|
3. **Tester la connexion** :
|
|
```bash
|
|
ssh git@192.168.1.195
|
|
```
|
|
|
|
### Pour GitHub/GitLab
|
|
|
|
1. **Ajouter votre clé SSH** à votre compte GitHub/GitLab
|
|
|
|
2. **Tester la connexion** :
|
|
```bash
|
|
ssh -T git@github.com
|
|
# ou
|
|
ssh -T git@gitlab.com
|
|
```
|
|
|
|
## 🐛 Dépannage
|
|
|
|
### Erreur : "Échec du clonage"
|
|
|
|
**Causes possibles :**
|
|
- URL Git incorrecte dans `repos.conf`
|
|
- Problème d'authentification SSH
|
|
- Serveur Git inaccessible
|
|
|
|
**Solutions :**
|
|
```bash
|
|
# Vérifier l'URL
|
|
cat repos.conf
|
|
|
|
# Tester la connexion SSH
|
|
ssh git@192.168.1.195
|
|
|
|
# Cloner manuellement pour voir l'erreur
|
|
git clone <URL_DU_REPO>
|
|
```
|
|
|
|
### Avertissement : "Modifications locales non commitées"
|
|
|
|
**Solution 1 : Commiter les modifications**
|
|
```bash
|
|
cd NationsGlory_ServeurBuild_Red
|
|
git add .
|
|
git commit -m "Mes modifications"
|
|
git push
|
|
```
|
|
|
|
**Solution 2 : Annuler les modifications**
|
|
```bash
|
|
cd NationsGlory_ServeurBuild_Red
|
|
git reset --hard origin/main
|
|
```
|
|
|
|
### Erreur : "MC_SERVER_REPO non défini"
|
|
|
|
**Solution :**
|
|
```bash
|
|
# Créer repos.conf depuis le template
|
|
cp repos.conf.example repos.conf
|
|
nano repos.conf
|
|
```
|
|
|
|
## 📚 Workflow recommandé
|
|
|
|
### Développement local
|
|
|
|
1. Faites vos modifications dans les sous-repositories
|
|
2. Testez localement
|
|
3. Committez et pushez vos changements
|
|
4. Sur le serveur de production, exécutez `./check-config.sh` pour mettre à jour
|
|
|
|
### Production
|
|
|
|
1. Exécutez régulièrement `./check-config.sh` pour vérifier les mises à jour
|
|
2. Si des mises à jour sont détectées :
|
|
```bash
|
|
./stop.sh
|
|
./check-config.sh # Met à jour
|
|
./deploy.sh # Redémarre
|
|
```
|
|
|
|
## 🎓 Avantages
|
|
|
|
✅ **Automatisation** : Plus besoin de cloner/pull manuellement
|
|
✅ **Détection de conflits** : Avertit avant d'écraser des modifications
|
|
✅ **Portable** : Fonctionne sur n'importe quelle machine
|
|
✅ **Flexible** : Supporte Git local, GitHub, GitLab, etc.
|
|
✅ **Sécurité** : Vérifie avant de modifier
|
|
|
|
---
|
|
|
|
**Note** : Le fichier `repos.conf` n'est pas versionné (dans `.gitignore`) pour permettre des configurations différentes sur chaque machine.
|