From 808c59c3df591fadf6584703959dd80acbde4764 Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Mon, 25 Aug 2025 16:57:20 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Documentation=20compl=C3=A8te=20de=20l'?= =?UTF-8?q?automatisation=20SSH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/AUTO_SSH_PUSH.md | 236 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 docs/AUTO_SSH_PUSH.md diff --git a/docs/AUTO_SSH_PUSH.md b/docs/AUTO_SSH_PUSH.md new file mode 100644 index 0000000..27bffbb --- /dev/null +++ b/docs/AUTO_SSH_PUSH.md @@ -0,0 +1,236 @@ +# Automatisation SSH pour Push - ihm_client + +## Vue d'ensemble + +L'automatisation SSH pour les push permet d'utiliser automatiquement votre clé SSH pour tous les push vers le repository `ihm_client` sur Gitea, sans avoir à spécifier manuellement les paramètres SSH. + +## Configuration automatique + +### 1. Configuration Git globale + +La configuration SSH est automatiquement appliquée : + +```bash +git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/" +``` + +### 2. Vérification SSH + +Le script vérifie automatiquement la configuration SSH : + +```bash +ssh -T git@git.4nkweb.com +``` + +## Scripts d'automatisation + +### Script principal : `auto-ssh-push.sh` + +Le script `scripts/auto-ssh-push.sh` offre plusieurs modes de push automatique : + +#### Options disponibles + +```bash +# Push rapide (message automatique) +./scripts/auto-ssh-push.sh quick + +# Push avec message personnalisé +./scripts/auto-ssh-push.sh message "feat: nouvelle fonctionnalité" + +# Push sur une branche spécifique +./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite + +# Push et préparation merge +./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main + +# Status et push conditionnel +./scripts/auto-ssh-push.sh status +``` + +#### Exemples d'utilisation + +```bash +# Push rapide sur la branche courante +./scripts/auto-ssh-push.sh quick + +# Push avec message de commit +./scripts/auto-ssh-push.sh message "fix: correction du bug de synchronisation" + +# Push sur une branche spécifique +./scripts/auto-ssh-push.sh branch develop + +# Push et création de Pull Request +./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main +``` + +### Alias Git globaux + +Des alias Git ont été configurés pour simplifier les push : + +```bash +# Push avec message personnalisé +git ssh-push "Mon message de commit" + +# Push rapide (message automatique) +git quick-push +``` + +## Fonctionnalités automatiques + +### 1. Configuration SSH automatique + +- Configuration Git pour utiliser SSH +- Vérification de l'authentification SSH +- Gestion des erreurs de configuration + +### 2. Push automatique + +- Ajout automatique de tous les changements (`git add .`) +- Commit automatique avec message +- Push automatique vers la branche courante + +### 3. Gestion des branches + +- Détection automatique de la branche courante +- Support des branches personnalisées +- Préparation des Pull Requests + +### 4. Validation et sécurité + +- Vérification de l'authentification SSH avant push +- Messages d'erreur explicites +- Gestion des cas d'échec + +## Workflow recommandé + +### Développement quotidien + +```bash +# 1. Faire vos modifications +# 2. Push rapide +./scripts/auto-ssh-push.sh quick + +# Ou avec message personnalisé +./scripts/auto-ssh-push.sh message "feat: ajout de la fonctionnalité X" +``` + +### Développement de fonctionnalités + +```bash +# 1. Créer une branche +git checkout -b feature/nouvelle-fonctionnalite + +# 2. Développer +# 3. Push sur la branche +./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite + +# 4. Préparer le merge +./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main +``` + +### Intégration continue + +```bash +# Push automatique après tests +./scripts/auto-ssh-push.sh message "ci: tests passés, déploiement automatique" +``` + +## Dépannage + +### Problèmes courants + +#### 1. Échec d'authentification SSH + +```bash +# Vérifier la clé SSH +ssh -T git@git.4nkweb.com + +# Si échec, configurer une nouvelle clé +ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk +ssh-add ~/.ssh/id_ed25519_4nk +``` + +#### 2. Configuration Git manquante + +```bash +# Reconfigurer Git pour SSH +git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/" +``` + +#### 3. Permissions de script + +```bash +# Rendre le script exécutable +chmod +x scripts/auto-ssh-push.sh +``` + +### Commandes de diagnostic + +```bash +# Vérifier la configuration SSH +ssh -vT git@git.4nkweb.com + +# Vérifier la configuration Git +git config --global --list | grep url + +# Vérifier les remotes +git remote -v +``` + +## Intégration avec CI/CD + +### Workflow Gitea Actions + +Le workflow CI/CD (`.gitea/workflows/ci.yml`) utilise automatiquement SSH : + +```yaml +- name: Setup SSH for Gitea + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H git.4nkweb.com >> ~/.ssh/known_hosts + git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/" +``` + +### Variables d'environnement + +- `SSH_PRIVATE_KEY` : Clé SSH privée pour l'authentification +- `SSH_PUBLIC_KEY` : Clé SSH publique (optionnelle) + +## Sécurité + +### Bonnes pratiques + +- Les clés SSH sont stockées de manière sécurisée +- Les permissions des fichiers SSH sont correctement configurées +- La vérification des hôtes SSH est activée +- Les clés sont régulièrement renouvelées + +### Permissions recommandées + +```bash +chmod 700 ~/.ssh +chmod 600 ~/.ssh/id_rsa +chmod 644 ~/.ssh/id_rsa.pub +chmod 600 ~/.ssh/config +``` + +## Évolution + +### Améliorations futures + +- Support pour plusieurs clés SSH +- Rotation automatique des clés +- Intégration avec un gestionnaire de secrets +- Support pour l'authentification par certificats SSH + +### Maintenance + +- Vérification régulière de la validité des clés SSH +- Mise à jour des configurations selon les bonnes pratiques +- Documentation des changements de configuration + +## Conclusion + +L'automatisation SSH pour les push simplifie considérablement le workflow de développement en éliminant la nécessité de configurer manuellement SSH pour chaque opération Git. Le script `auto-ssh-push.sh` et les alias Git offrent une interface simple et sécurisée pour tous les push vers le repository `ihm_client`.