# 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`.