237 lines
5.6 KiB
Markdown
237 lines
5.6 KiB
Markdown
# 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`.
|