git update
This commit is contained in:
parent
1297a7219e
commit
01a0d2b37b
@ -1,13 +1,19 @@
|
|||||||
|
---
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
# Open source et Gitea
|
# Open source et Gitea
|
||||||
|
|
||||||
[portée]
|
[portée]
|
||||||
Conformité open source, templates Gitea, CI.
|
Conformité open source, templates Gitea, CI.
|
||||||
|
|
||||||
[objectifs]
|
[objectifs]
|
||||||
|
|
||||||
- Préparer chaque projet pour un dépôt Gitea (git.4nkweb.com).
|
- Préparer chaque projet pour un dépôt Gitea (git.4nkweb.com).
|
||||||
- Maintenir les fichiers de gouvernance et la CI.
|
- Maintenir les fichiers de gouvernance et la CI.
|
||||||
|
|
||||||
[directives]
|
[directives]
|
||||||
|
|
||||||
- Vérifier la présence et l’actualité de : LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, OPEN_SOURCE_CHECKLIST.md.
|
- Vérifier la présence et l’actualité de : LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, OPEN_SOURCE_CHECKLIST.md.
|
||||||
- Maintenir .gitea/ :
|
- Maintenir .gitea/ :
|
||||||
- ISSUE_TEMPLATE/bug_report.md, feature_request.md
|
- ISSUE_TEMPLATE/bug_report.md, feature_request.md
|
||||||
@ -16,8 +22,38 @@ Conformité open source, templates Gitea, CI.
|
|||||||
- Documenter dans docs/GITEA_SETUP.md la configuration distante et les permissions.
|
- Documenter dans docs/GITEA_SETUP.md la configuration distante et les permissions.
|
||||||
|
|
||||||
[validations]
|
[validations]
|
||||||
|
|
||||||
- Refus si un des fichiers « gouvernance/CI » manque.
|
- Refus si un des fichiers « gouvernance/CI » manque.
|
||||||
- Cohérence entre docs/OPEN_SOURCE_CHECKLIST.md et l’état du repo.
|
- Cohérence entre docs/OPEN_SOURCE_CHECKLIST.md et l’état du repo.
|
||||||
|
|
||||||
[artefacts concernés]
|
[artefacts concernés]
|
||||||
|
|
||||||
|
- .gitea/**, docs/GITEA_SETUP.md, docs/OPEN_SOURCE_CHECKLIST.md.
|
||||||
|
|
||||||
|
# Open source et Gitea
|
||||||
|
|
||||||
|
[portée]
|
||||||
|
Conformité open source, templates Gitea, CI.
|
||||||
|
|
||||||
|
[objectifs]
|
||||||
|
|
||||||
|
- Préparer chaque projet pour un dépôt Gitea (git.4nkweb.com).
|
||||||
|
- Maintenir les fichiers de gouvernance et la CI.
|
||||||
|
|
||||||
|
[directives]
|
||||||
|
|
||||||
|
- Vérifier la présence et l’actualité de : LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, OPEN_SOURCE_CHECKLIST.md.
|
||||||
|
- Maintenir .gitea/ :
|
||||||
|
- ISSUE_TEMPLATE/bug_report.md, feature_request.md
|
||||||
|
- PULL_REQUEST_TEMPLATE.md
|
||||||
|
- workflows/ci.yml
|
||||||
|
- Documenter dans docs/GITEA_SETUP.md la configuration distante et les permissions.
|
||||||
|
|
||||||
|
[validations]
|
||||||
|
|
||||||
|
- Refus si un des fichiers « gouvernance/CI » manque.
|
||||||
|
- Cohérence entre docs/OPEN_SOURCE_CHECKLIST.md et l’état du repo.
|
||||||
|
|
||||||
|
[artefacts concernés]
|
||||||
|
|
||||||
- .gitea/**, docs/GITEA_SETUP.md, docs/OPEN_SOURCE_CHECKLIST.md.
|
- .gitea/**, docs/GITEA_SETUP.md, docs/OPEN_SOURCE_CHECKLIST.md.
|
||||||
|
53
.cursor/rules/95-triage-and-problem-solving.mdc
Normal file
53
.cursor/rules/95-triage-and-problem-solving.mdc
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Tri, diagnostic et résolution de problèmes
|
||||||
|
|
||||||
|
[portée]
|
||||||
|
Boucle de triage : reproduction, diagnostic, correctif, non-régression.
|
||||||
|
|
||||||
|
[objectifs]
|
||||||
|
|
||||||
|
- Exécuter automatiquement les étapes de résolution.
|
||||||
|
- Bloquer l’avancement tant que les erreurs ne sont pas corrigées.
|
||||||
|
|
||||||
|
[directives]
|
||||||
|
|
||||||
|
- Étapes obligatoires : reproduction minimale, inspection des logs, bissection des changements, formulation d’hypothèses, tests ciblés, correctif, test de non-régression.
|
||||||
|
- Lorsque plusieurs hypothèses ont été testées, produire un REX dans archive/ avec liens vers les commits.
|
||||||
|
- Poser des questions de cohérence fonctionnelle si des ambiguïtés subsistent (contrats d’API, invariants, SLA).
|
||||||
|
|
||||||
|
[validations]
|
||||||
|
|
||||||
|
- Interdiction de clore une tâche si un test échoue ou si une alerte critique subsiste.
|
||||||
|
- Traçabilité du REX si investigations multiples.
|
||||||
|
|
||||||
|
[artefacts concernés]
|
||||||
|
|
||||||
|
- tests/**, archive/**, docs/TESTING.md, docs/ARCHITECTURE.md.
|
||||||
|
|
||||||
|
# Tri, diagnostic et résolution de problèmes
|
||||||
|
|
||||||
|
[portée]
|
||||||
|
Boucle de triage : reproduction, diagnostic, correctif, non-régression.
|
||||||
|
|
||||||
|
[objectifs]
|
||||||
|
|
||||||
|
- Exécuter automatiquement les étapes de résolution.
|
||||||
|
- Bloquer l’avancement tant que les erreurs ne sont pas corrigées.
|
||||||
|
|
||||||
|
[directives]
|
||||||
|
|
||||||
|
- Étapes obligatoires : reproduction minimale, inspection des logs, bissection des changements, formulation d’hypothèses, tests ciblés, correctif, test de non-régression.
|
||||||
|
- Lorsque plusieurs hypothèses ont été testées, produire un REX dans archive/ avec liens vers les commits.
|
||||||
|
- Poser des questions de cohérence fonctionnelle si des ambiguïtés subsistent (contrats d’API, invariants, SLA).
|
||||||
|
|
||||||
|
[validations]
|
||||||
|
|
||||||
|
- Interdiction de clore une tâche si un test échoue ou si une alerte critique subsiste.
|
||||||
|
- Traçabilité du REX si investigations multiples.
|
||||||
|
|
||||||
|
[artefacts concernés]
|
||||||
|
|
||||||
|
- tests/**, archive/**, docs/TESTING.md, docs/ARCHITECTURE.md.
|
15
.cursor/rules/ruleset-index.md
Normal file
15
.cursor/rules/ruleset-index.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Index des règles .cursor/rules
|
||||||
|
|
||||||
|
- 00-foundations.mdc : règles linguistiques et éditoriales (français, pas d’exemples en base, introduction/conclusion).
|
||||||
|
- 10-project-structure.mdc : arborescence canonique 4NK_node et garde-fous.
|
||||||
|
- 20-documentation.mdc : documentation continue, remplacement de « RESUME », INDEX.md.
|
||||||
|
- 30-testing.mdc : tests (unit, integration, connectivity, performance, external), logs/reports.
|
||||||
|
- 40-dependencies-and-build.mdc : dépendances, compilation, corrections bloquantes.
|
||||||
|
- 50-data-csv-models.mdc : CSV avec en-têtes multi-lignes, définition des colonnes.
|
||||||
|
- 60-office-docs.mdc : lecture .docx via docx2txt + repli.
|
||||||
|
- 70-frontend-architecture.mdc : React.lazy/Suspense, état global, couche de services.
|
||||||
|
- 80-versioning-and-release.mdc : CHANGELOG, semver, confirmation push/tag.
|
||||||
|
- 90-gitea-and-oss.mdc : fichiers open source, .gitea, CI, Gitea remote.
|
||||||
|
- 95-triage-and-problem-solving.mdc : boucle de diagnostic, REX, non-régression.
|
||||||
|
|
||||||
|
Ces règles sont conçues pour être ajoutées au contexte de Cursor depuis l’interface (@Cursor Rules) et s’appuient sur le mécanisme de règles projet stockées dans `.cursor/rules/`. :contentReference[oaicite:3]{index=3}
|
258
AGENTS.md
Normal file
258
AGENTS.md
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
## Table des matières
|
||||||
|
|
||||||
|
- [Introduction](#introduction)
|
||||||
|
- [Agents fondamentaux](#agents-fondamentaux)
|
||||||
|
- [Agents spécialisés documentation](#agents-spécialisés-documentation)
|
||||||
|
- [Agents spécialisés tests](#agents-spécialisés-tests)
|
||||||
|
- [Agents techniques](#agents-techniques)
|
||||||
|
- [Agents frontend](#agents-frontend)
|
||||||
|
- [Agents open source et CI](#agents-open-source-et-ci)
|
||||||
|
- [Agents complémentaires](#agents-complémentaires)
|
||||||
|
- [Matrice de coordination](#matrice-de-coordination)
|
||||||
|
- [Conclusion](#conclusion)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
Ce document définit les agents, leurs rôles et leurs responsabilités dans le projet `4NK/4NK_node`.
|
||||||
|
Chaque agent est assigné à un périmètre clair (documentation, tests, dépendances, données, CI, gouvernance open source).
|
||||||
|
L’objectif est d’assurer une maintenance cohérente de l’arborescence, une traçabilité complète et une exécution fiable des bonnes pratiques.
|
||||||
|
Les règles détaillées de réalisation et de contrôle sont précisées dans `.cursor/rules/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents fondamentaux
|
||||||
|
|
||||||
|
### Agent Fondation
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Garantir que toute production est en français.
|
||||||
|
- Vérifier l’absence d’exemples de code applicatif dans la base de code.
|
||||||
|
- Imposer l’introduction et/ou conclusion dans chaque contenu.
|
||||||
|
|
||||||
|
**Artefacts :**
|
||||||
|
|
||||||
|
- Tous fichiers.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Structure
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Maintenir l’arborescence canonique du projet.
|
||||||
|
- Déplacer les documents obsolètes vers `archive/`.
|
||||||
|
- Bloquer toute suppression non documentée.
|
||||||
|
|
||||||
|
**Artefacts :**
|
||||||
|
|
||||||
|
- `archive/`, `docs/`, `tests/`, `.gitea/`, `CHANGELOG.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents spécialisés documentation
|
||||||
|
|
||||||
|
### Agent Documentation
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Mettre à jour les fichiers de `docs/` selon l’impact des changements.
|
||||||
|
- Maintenir `INDEX.md` comme table des matières centrale.
|
||||||
|
- Produire des REX techniques dans `archive/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Données CSV
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Considérer les CSV comme source de vérité des modèles de données.
|
||||||
|
- Confirmer la structure et exiger une définition des colonnes.
|
||||||
|
- Corriger automatiquement les incohérences de type documentées.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Documents bureautiques
|
||||||
|
|
||||||
|
**Rôle (Consulté)** :
|
||||||
|
|
||||||
|
- Lire les `.docx` via `docx2txt`.
|
||||||
|
- Proposer des alternatives en cas d’échec.
|
||||||
|
- Documenter les imports dans `INDEX.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents spécialisés tests
|
||||||
|
|
||||||
|
### Agent Tests
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Maintenir la couverture : `unit`, `integration`, `connectivity`, `performance`, `external`.
|
||||||
|
- Gérer `tests/logs` et `tests/reports`.
|
||||||
|
- Exiger des tests verts avant commit.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Performance
|
||||||
|
|
||||||
|
**Rôle (Consulté)** :
|
||||||
|
|
||||||
|
- Conduire des benchmarks reproductibles.
|
||||||
|
- Vérifier l’impact performance avant toute fusion.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents techniques
|
||||||
|
|
||||||
|
### Agent Dépendances
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Ajouter automatiquement les dépendances manquantes.
|
||||||
|
- Vérifier les dernières versions stables.
|
||||||
|
- Documenter les changements dans `ARCHITECTURE.md`, `CONFIGURATION.md` et `CHANGELOG.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Compilation
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Compiler très régulièrement et à chaque étape critique.
|
||||||
|
- Bloquer toute progression en présence d’erreurs.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Résolution
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Exécuter systématiquement la boucle de diagnostic (reproduction, logs, bissection, hypothèses, correctif, non-régression).
|
||||||
|
- Produire un REX en cas d’hypothèses multiples.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents frontend
|
||||||
|
|
||||||
|
### Agent Frontend
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Implémenter le code splitting (`React.lazy`, `Suspense`).
|
||||||
|
- Centraliser l’état via Redux ou Context API.
|
||||||
|
- Créer une couche d’abstraction pour les services de données.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents open source et CI
|
||||||
|
|
||||||
|
### Agent Open Source
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Maintenir à jour : `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `OPEN_SOURCE_CHECKLIST.md`.
|
||||||
|
- Vérifier l’alignement continu avec `4NK_node`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Gitea
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Vérifier la présence et l’actualité de `.gitea/ISSUE_TEMPLATE/*`, `PULL_REQUEST_TEMPLATE.md`, `.gitea/workflows/ci.yml`.
|
||||||
|
- Documenter la configuration dans `docs/GITEA_SETUP.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Versionnage
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Maintenir `CHANGELOG.md` comme source unique de vérité.
|
||||||
|
- Proposer un bump semver justifié.
|
||||||
|
- Demander confirmation avant push et tag.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agents complémentaires
|
||||||
|
|
||||||
|
### Agent Coordination
|
||||||
|
|
||||||
|
**Rôle (Accountable)** :
|
||||||
|
|
||||||
|
- Vérifier que tous les agents concernés ont bien agi lors d’un changement complexe.
|
||||||
|
- Consolider les validations avant merge.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Qualité / Linting
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Appliquer les règles de style, lint et sécurité statique.
|
||||||
|
- Surveiller la dette technique et l’accessibilité.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Release Manager
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Superviser le passage d’une version à l’autre.
|
||||||
|
- Vérifier la cohérence entre `CHANGELOG.md`, `ROADMAP.md` et les tags Git.
|
||||||
|
- Déclencher les workflows CI/CD de release.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Sécurité proactive
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- Surveiller les dépendances vulnérables (CVE, advisories).
|
||||||
|
- Mettre à jour `SECURITY_AUDIT.md` et notifier l’agent Dépendances.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Contributeurs externes
|
||||||
|
|
||||||
|
**Rôle (Consulté)** :
|
||||||
|
|
||||||
|
- Encadrer la réception de PRs et issues communautaires.
|
||||||
|
- Veiller au respect de `CODE_OF_CONDUCT.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Agent Documentation communautaire
|
||||||
|
|
||||||
|
**Rôle (Responsable)** :
|
||||||
|
|
||||||
|
- S’assurer que `COMMUNITY_GUIDE.md` et `OPEN_SOURCE_CHECKLIST.md` sont accessibles, clairs et alignés avec l’expérience contributeurs.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Matrice de coordination
|
||||||
|
|
||||||
|
| Type de changement | Agents impliqués | Artefacts principaux | Validation obligatoire |
|
||||||
|
|--------------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------|
|
||||||
|
| Ajout de fonctionnalité | Documentation, Tests, Dépendances, Frontend | API.md, USAGE.md, ARCHITECTURE.md, tests/unit, tests/integration, CHANGELOG.md (*Added*), README.md | Oui |
|
||||||
|
| Correction de bug | Résolution, Tests, Documentation | tests/unit, TESTING.md, archive/, CHANGELOG.md (*Fixed*) | Oui |
|
||||||
|
| Refactorisation / amélioration | Structure, Documentation, Compilation | ARCHITECTURE.md, archive/, CHANGELOG.md (*Changed*) | Oui |
|
||||||
|
| Dépendance ajoutée/mise à jour | Dépendances, Compilation, Documentation | ARCHITECTURE.md, CONFIGURATION.md, CHANGELOG.md (*Dependencies*) | Oui |
|
||||||
|
| Données CSV modifiées | Données CSV, Documentation, Tests | API.md, ARCHITECTURE.md, USAGE.md, tests/unit, CHANGELOG.md (*Data model update*) | Oui |
|
||||||
|
| Migration / breaking change | Documentation, Tests, Résolution, Versionnage | MIGRATION.md, INSTALLATION.md, RELEASE_PLAN.md, ROADMAP.md, tests/integration, CHANGELOG.md (*Breaking*)| Oui |
|
||||||
|
| Sécurité / audit | Documentation, Tests, Open Source, Sécurité proactive | SECURITY_AUDIT.md, tests/external, tests/connectivity, CHANGELOG.md (*Security*) | Oui |
|
||||||
|
| Préparation open source / CI | Open Source, Gitea, Versionnage, Documentation communautaire, Contributeurs externes | .gitea/**, GITEA_SETUP.md, OPEN_SOURCE_CHECKLIST.md, CHANGELOG.md (*CI/CD* / *Governance*) | Oui |
|
||||||
|
| Optimisation performance | Performance, Tests, Documentation | tests/performance, tests/reports, ARCHITECTURE.md, CHANGELOG.md (*Performance*) | Oui |
|
||||||
|
| Évolution frontend | Frontend, Documentation, Tests | ARCHITECTURE.md, USAGE.md, tests/integration, CHANGELOG.md (*Frontend*) | Oui |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
Le présent `AGENTS.md` formalise non seulement les rôles et responsabilités, mais également la coordination opérationnelle entre agents pour chaque type de changement.
|
||||||
|
Grâce à la table des matières, aux agents complémentaires et à la matrice structurée, ce fichier constitue une référence vivante garantissant la cohérence entre code, documentation, tests, dépendances, CI/CD et gouvernance open source.
|
322
docs/SSH_USATE.md
Normal file
322
docs/SSH_USATE.md
Normal file
@ -0,0 +1,322 @@
|
|||||||
|
# Documentation SSH complète - ihm_client
|
||||||
|
|
||||||
|
## Vue d'ensemble
|
||||||
|
|
||||||
|
Ce document consolide toute la documentation SSH pour le projet `ihm_client`, couvrant l'automatisation des push, la configuration CI/CD, et les bonnes pratiques de sécurité.
|
||||||
|
|
||||||
|
## Table des matières
|
||||||
|
|
||||||
|
- [Configuration automatique](#configuration-automatique)
|
||||||
|
- [Scripts d'automatisation](#scripts-dautomatisation)
|
||||||
|
- [Workflow CI/CD](#workflow-cicd)
|
||||||
|
- [Alias Git](#alias-git)
|
||||||
|
- [Bonnes pratiques](#bonnes-pratiques)
|
||||||
|
- [Dépannage](#dépannage)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration automatique
|
||||||
|
|
||||||
|
### Configuration Git globale
|
||||||
|
|
||||||
|
La configuration SSH est automatiquement appliquée pour tous les push :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vérification SSH
|
||||||
|
|
||||||
|
Test automatique de la connexion SSH :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -T git@git.4nkweb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scripts d'automatisation
|
||||||
|
|
||||||
|
### 1. 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 merge (avec confirmation)
|
||||||
|
./scripts/auto-ssh-push.sh merge
|
||||||
|
|
||||||
|
# Vérification du statut
|
||||||
|
./scripts/auto-ssh-push.sh status
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Fonctionnalités
|
||||||
|
|
||||||
|
- **Configuration SSH automatique** - Plus besoin de configurer SSH manuellement
|
||||||
|
- **Push automatique** - Ajout, commit et push en une commande
|
||||||
|
- **Gestion des branches** - Support des branches personnalisées
|
||||||
|
- **Vérification SSH** - Test automatique de la connexion SSH
|
||||||
|
- **Messages de commit** - Messages automatiques ou personnalisés
|
||||||
|
|
||||||
|
### 2. Script d'initialisation : `init-ssh-env.sh`
|
||||||
|
|
||||||
|
Le script `scripts/init-ssh-env.sh` configure automatiquement l'environnement SSH :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/init-ssh-env.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Fonctionnalités
|
||||||
|
|
||||||
|
- Vérification de l'environnement de développement
|
||||||
|
- Configuration SSH automatique
|
||||||
|
- Test de connectivité SSH
|
||||||
|
- Configuration des alias Git
|
||||||
|
- Validation de la configuration
|
||||||
|
|
||||||
|
### 3. Script CI/CD : `setup-ssh-ci.sh`
|
||||||
|
|
||||||
|
Le script `scripts/setup-ssh-ci.sh` configure SSH pour les environnements CI/CD :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/setup-ssh-ci.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Fonctionnalités
|
||||||
|
|
||||||
|
- Détection automatique de l'environnement CI
|
||||||
|
- Configuration SSH pour Gitea Actions
|
||||||
|
- Gestion des clés SSH privées
|
||||||
|
- Test de connexion SSH
|
||||||
|
- Configuration Git pour SSH
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workflow CI/CD
|
||||||
|
|
||||||
|
### Configuration Gitea Actions
|
||||||
|
|
||||||
|
Le workflow CI/CD dans `.gitea/workflows/ci.yml` inclut une étape de configuration 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 requises
|
||||||
|
|
||||||
|
- `SSH_PRIVATE_KEY` : Clé SSH privée pour l'authentification
|
||||||
|
- `SSH_PUBLIC_KEY` : Clé SSH publique (optionnelle)
|
||||||
|
|
||||||
|
### Jobs configurés
|
||||||
|
|
||||||
|
- **test** : Tests unitaires et d'intégration
|
||||||
|
- **security** : Tests de sécurité et audit
|
||||||
|
- **integration-test** : Tests d'intégration complets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Alias Git
|
||||||
|
|
||||||
|
### Alias configurés
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Push rapide avec message automatique
|
||||||
|
git quick-push
|
||||||
|
|
||||||
|
# Push avec message personnalisé
|
||||||
|
git ssh-push "Mon message de commit"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration des alias
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Alias pour push rapide
|
||||||
|
git config --global alias.quick-push '!f() { git add . && git commit -m "Update $(date)" && git push origin $(git branch --show-current); }; f'
|
||||||
|
|
||||||
|
# Alias pour push avec message
|
||||||
|
git config --global alias.ssh-push '!f() { git add . && git commit -m "${1:-Auto-commit $(date)}" && git push origin $(git branch --show-current); }; f'
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Bonnes pratiques
|
||||||
|
|
||||||
|
### Sécurité
|
||||||
|
|
||||||
|
1. **Permissions des clés SSH**
|
||||||
|
```bash
|
||||||
|
chmod 600 ~/.ssh/id_rsa
|
||||||
|
chmod 644 ~/.ssh/id_rsa.pub
|
||||||
|
chmod 600 ~/.ssh/config
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Configuration SSH sécurisée**
|
||||||
|
```bash
|
||||||
|
Host git.4nkweb.com
|
||||||
|
HostName git.4nkweb.com
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile=/dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Gestion des secrets**
|
||||||
|
- Ne jamais commiter de clés SSH dans le code
|
||||||
|
- Utiliser les secrets Gitea pour les clés privées
|
||||||
|
- Rotation régulière des clés SSH
|
||||||
|
|
||||||
|
### Workflow recommandé
|
||||||
|
|
||||||
|
1. **Initialisation**
|
||||||
|
```bash
|
||||||
|
./scripts/init-ssh-env.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Développement quotidien**
|
||||||
|
```bash
|
||||||
|
# Push rapide
|
||||||
|
./scripts/auto-ssh-push.sh quick
|
||||||
|
|
||||||
|
# Ou avec alias Git
|
||||||
|
git quick-push
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Push avec message**
|
||||||
|
```bash
|
||||||
|
./scripts/auto-ssh-push.sh message "feat: nouvelle fonctionnalité"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dépannage
|
||||||
|
|
||||||
|
### Problèmes courants
|
||||||
|
|
||||||
|
#### 1. Échec d'authentification SSH
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Vérifier la configuration SSH
|
||||||
|
ssh -T git@git.4nkweb.com
|
||||||
|
|
||||||
|
# Vérifier les permissions
|
||||||
|
ls -la ~/.ssh/
|
||||||
|
|
||||||
|
# Régénérer la clé SSH si nécessaire
|
||||||
|
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Configuration Git incorrecte
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Vérifier la configuration Git
|
||||||
|
git config --global --list | grep url
|
||||||
|
|
||||||
|
# Reconfigurer SSH
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Problèmes CI/CD
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Vérifier les variables d'environnement
|
||||||
|
echo $SSH_PRIVATE_KEY
|
||||||
|
|
||||||
|
# Tester la configuration SSH
|
||||||
|
./scripts/setup-ssh-ci.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Messages d'erreur courants
|
||||||
|
|
||||||
|
- **"Permission denied"** : Vérifier les permissions des clés SSH
|
||||||
|
- **"Host key verification failed"** : Ajouter l'hôte aux known_hosts
|
||||||
|
- **"Could not resolve hostname"** : Vérifier la connectivité réseau
|
||||||
|
|
||||||
|
### Logs et debugging
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Activer le debug SSH
|
||||||
|
ssh -vT git@git.4nkweb.com
|
||||||
|
|
||||||
|
# Vérifier les logs Git
|
||||||
|
GIT_SSH_COMMAND="ssh -v" git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Intégration avec 4NK_node
|
||||||
|
|
||||||
|
### Configuration pour l'intégration
|
||||||
|
|
||||||
|
Le projet `ihm_client` est configuré pour s'intégrer dans l'infrastructure `4NK_node` :
|
||||||
|
|
||||||
|
1. **Script d'intégration** : `scripts/integrate-4nk-node.sh`
|
||||||
|
2. **Configuration Docker** : `Dockerfile.4nk-node`
|
||||||
|
3. **Configuration Nginx** : `nginx.4nk-node.conf`
|
||||||
|
4. **Script de démarrage** : `start-4nk-node.sh`
|
||||||
|
|
||||||
|
### Workflow d'intégration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Intégrer ihm_client dans 4NK_node
|
||||||
|
./scripts/integrate-4nk-node.sh
|
||||||
|
|
||||||
|
# Vérifier l'intégration
|
||||||
|
docker-compose -f docker-compose.4nk-node.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Évolution future
|
||||||
|
|
||||||
|
### Améliorations prévues
|
||||||
|
|
||||||
|
1. **Support multi-environnements**
|
||||||
|
- Configuration automatique pour différents environnements
|
||||||
|
- Gestion des clés SSH multiples
|
||||||
|
|
||||||
|
2. **Intégration avancée**
|
||||||
|
- Support des hooks Git
|
||||||
|
- Intégration avec d'autres outils CI/CD
|
||||||
|
|
||||||
|
3. **Sécurité renforcée**
|
||||||
|
- Support des clés SSH temporaires
|
||||||
|
- Audit automatique des permissions
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
|
||||||
|
- Vérification régulière de la configuration SSH
|
||||||
|
- Mise à jour des scripts d'automatisation
|
||||||
|
- Documentation des nouvelles fonctionnalités
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
L'automatisation SSH pour `ihm_client` simplifie considérablement le workflow de développement en éliminant la nécessité de configurer manuellement SSH pour chaque opération Git. Les scripts et alias fournis offrent une interface simple et sécurisée pour tous les push vers le repository.
|
||||||
|
|
||||||
|
### Ressources
|
||||||
|
|
||||||
|
- [Documentation SSH officielle](https://git-scm.com/book/fr/v2/Git-sur-le-serveur-Génération-d-une-clé-SSH)
|
||||||
|
- [Guide Gitea SSH](https://docs.gitea.com/usage/ssh-setup)
|
||||||
|
- [Bonnes pratiques SSH](https://www.ssh.com/academy/ssh/key)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Dernière mise à jour** : $(date '+%Y-%m-%d')
|
||||||
|
**Version** : 1.0.0
|
155
scripts/auto-ssh-push.sh
Executable file
155
scripts/auto-ssh-push.sh
Executable file
@ -0,0 +1,155 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Script d'automatisation des push SSH pour ihm_client
|
||||||
|
# Utilise automatiquement la clé SSH pour tous les push
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🔑 Configuration automatique SSH pour push ihm_client..."
|
||||||
|
|
||||||
|
# Configuration SSH automatique
|
||||||
|
echo "⚙️ Configuration Git pour utiliser SSH..."
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
|
||||||
|
# Vérifier la configuration SSH
|
||||||
|
echo "🔍 Vérification de la configuration SSH..."
|
||||||
|
if ! ssh -T git@git.4nkweb.com 2>&1 | grep -q "successfully authenticated"; then
|
||||||
|
echo "❌ Échec de l'authentification SSH"
|
||||||
|
echo "💡 Vérifiez que votre clé SSH est configurée :"
|
||||||
|
echo " 1. ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk"
|
||||||
|
echo " 2. Ajouter la clé publique à votre compte Gitea"
|
||||||
|
echo " 3. ssh-add ~/.ssh/id_ed25519_4nk"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Authentification SSH réussie"
|
||||||
|
|
||||||
|
# Fonction pour push automatique
|
||||||
|
auto_push() {
|
||||||
|
local branch=${1:-$(git branch --show-current)}
|
||||||
|
local commit_message=${2:-"Auto-commit $(date '+%Y-%m-%d %H:%M:%S')"}
|
||||||
|
|
||||||
|
echo "🚀 Push automatique sur la branche: $branch"
|
||||||
|
|
||||||
|
# Ajouter tous les changements
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Commiter avec le message fourni
|
||||||
|
git commit -m "$commit_message"
|
||||||
|
|
||||||
|
# Push avec SSH automatique
|
||||||
|
echo "📤 Push vers origin/$branch..."
|
||||||
|
git push origin "$branch"
|
||||||
|
|
||||||
|
echo "✅ Push réussi !"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour push avec message personnalisé
|
||||||
|
push_with_message() {
|
||||||
|
local message="$1"
|
||||||
|
local branch=${2:-$(git branch --show-current)}
|
||||||
|
|
||||||
|
echo "💬 Push avec message: $message"
|
||||||
|
auto_push "$branch" "$message"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour push rapide (sans message)
|
||||||
|
quick_push() {
|
||||||
|
local branch=${1:-$(git branch --show-current)}
|
||||||
|
auto_push "$branch"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour push sur une branche spécifique
|
||||||
|
push_branch() {
|
||||||
|
local branch="$1"
|
||||||
|
local message=${2:-"Update $branch $(date '+%Y-%m-%d %H:%M:%S')"}
|
||||||
|
|
||||||
|
echo "🌿 Push sur la branche: $branch"
|
||||||
|
auto_push "$branch" "$message"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour push et merge vers main
|
||||||
|
push_and_merge() {
|
||||||
|
local source_branch=${1:-$(git branch --show-current)}
|
||||||
|
local target_branch=${2:-main}
|
||||||
|
|
||||||
|
echo "🔄 Push et merge $source_branch -> $target_branch"
|
||||||
|
|
||||||
|
# Push de la branche source
|
||||||
|
auto_push "$source_branch"
|
||||||
|
|
||||||
|
# Demander confirmation pour le merge
|
||||||
|
read -p "Voulez-vous créer une Pull Request pour merger vers $target_branch ? (y/N): " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
echo "🔗 Création de la Pull Request..."
|
||||||
|
echo "💡 Allez sur: https://git.4nkweb.com/4nk/ihm_client/compare/$target_branch...$source_branch"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour status et push conditionnel
|
||||||
|
status_and_push() {
|
||||||
|
echo "📊 Statut du repository:"
|
||||||
|
git status --short
|
||||||
|
|
||||||
|
if [[ -n $(git status --porcelain) ]]; then
|
||||||
|
echo "📝 Changements détectés, push automatique..."
|
||||||
|
auto_push
|
||||||
|
else
|
||||||
|
echo "✅ Aucun changement à pousser"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Menu interactif si aucun argument fourni
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
echo "🤖 Script de push SSH automatique pour ihm_client"
|
||||||
|
echo ""
|
||||||
|
echo "Options disponibles:"
|
||||||
|
echo " auto-push.sh quick - Push rapide"
|
||||||
|
echo " auto-push.sh message \"Mon message\" - Push avec message"
|
||||||
|
echo " auto-push.sh branch nom-branche - Push sur branche spécifique"
|
||||||
|
echo " auto-push.sh merge [source] [target] - Push et préparation merge"
|
||||||
|
echo " auto-push.sh status - Status et push conditionnel"
|
||||||
|
echo ""
|
||||||
|
echo "Exemples:"
|
||||||
|
echo " ./scripts/auto-ssh-push.sh quick"
|
||||||
|
echo " ./scripts/auto-ssh-push.sh message \"feat: nouvelle fonctionnalité\""
|
||||||
|
echo " ./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite"
|
||||||
|
echo " ./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main"
|
||||||
|
echo ""
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Traitement des arguments
|
||||||
|
case "$1" in
|
||||||
|
"quick")
|
||||||
|
quick_push
|
||||||
|
;;
|
||||||
|
"message")
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
echo "❌ Message requis pour l'option 'message'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
push_with_message "$2"
|
||||||
|
;;
|
||||||
|
"branch")
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
echo "❌ Nom de branche requis pour l'option 'branch'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
push_branch "$2" "$3"
|
||||||
|
;;
|
||||||
|
"merge")
|
||||||
|
push_and_merge "$2" "$3"
|
||||||
|
;;
|
||||||
|
"status")
|
||||||
|
status_and_push
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "❌ Option inconnue: $1"
|
||||||
|
echo "💡 Utilisez './scripts/auto-ssh-push.sh' pour voir les options"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "🎯 Push SSH automatique terminé !"
|
152
scripts/init-ssh-env.sh
Executable file
152
scripts/init-ssh-env.sh
Executable file
@ -0,0 +1,152 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Script d'initialisation de l'environnement SSH pour ihm_client
|
||||||
|
# Configure automatiquement SSH pour tous les push
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 Initialisation de l'environnement SSH pour ihm_client..."
|
||||||
|
|
||||||
|
# Couleurs pour les messages
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Fonction pour afficher les messages colorés
|
||||||
|
print_status() {
|
||||||
|
echo -e "${BLUE}[INFO]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_warning() {
|
||||||
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}[ERROR]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Vérifier si on est dans le bon répertoire
|
||||||
|
if [[ ! -f "package.json" ]] || [[ ! -d ".git" ]]; then
|
||||||
|
print_error "Ce script doit être exécuté depuis le répertoire racine de ihm_client"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_status "Configuration de l'environnement SSH..."
|
||||||
|
|
||||||
|
# 1. Configuration Git pour SSH
|
||||||
|
print_status "Configuration Git pour utiliser SSH..."
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
|
||||||
|
# 2. Vérifier si une clé SSH existe
|
||||||
|
print_status "Vérification des clés SSH existantes..."
|
||||||
|
if [[ -f ~/.ssh/id_rsa ]] || [[ -f ~/.ssh/id_ed25519 ]]; then
|
||||||
|
print_success "Clé SSH trouvée"
|
||||||
|
SSH_KEY_EXISTS=true
|
||||||
|
else
|
||||||
|
print_warning "Aucune clé SSH trouvée"
|
||||||
|
SSH_KEY_EXISTS=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Tester la connexion SSH
|
||||||
|
print_status "Test de la connexion SSH vers git.4nkweb.com..."
|
||||||
|
if ssh -T git@git.4nkweb.com 2>&1 | grep -q "successfully authenticated"; then
|
||||||
|
print_success "Authentification SSH réussie"
|
||||||
|
SSH_WORKING=true
|
||||||
|
else
|
||||||
|
print_error "Échec de l'authentification SSH"
|
||||||
|
SSH_WORKING=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Configuration des alias Git
|
||||||
|
print_status "Configuration des alias Git..."
|
||||||
|
git config --global alias.ssh-push '!f() { git add . && git commit -m "${1:-Auto-commit $(date)}" && git push origin $(git branch --show-current); }; f'
|
||||||
|
git config --global alias.quick-push '!f() { git add . && git commit -m "Update $(date)" && git push origin $(git branch --show-current); }; f'
|
||||||
|
|
||||||
|
print_success "Alias Git configurés"
|
||||||
|
|
||||||
|
# 5. Vérifier les remotes
|
||||||
|
print_status "Vérification des remotes Git..."
|
||||||
|
if git remote -v | grep -q "git@git.4nkweb.com"; then
|
||||||
|
print_success "Remotes configurés pour SSH"
|
||||||
|
else
|
||||||
|
print_warning "Remotes non configurés pour SSH"
|
||||||
|
print_status "Mise à jour des remotes..."
|
||||||
|
git remote set-url origin git@git.4nkweb.com:4nk/ihm_client.git
|
||||||
|
print_success "Remotes mis à jour"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 6. Rendre les scripts exécutables
|
||||||
|
print_status "Configuration des permissions des scripts..."
|
||||||
|
chmod +x scripts/auto-ssh-push.sh 2>/dev/null || true
|
||||||
|
chmod +x scripts/setup-ssh-ci.sh 2>/dev/null || true
|
||||||
|
|
||||||
|
print_success "Scripts rendus exécutables"
|
||||||
|
|
||||||
|
# 7. Créer un fichier de configuration local
|
||||||
|
print_status "Création du fichier de configuration local..."
|
||||||
|
cat > .ssh-config << EOF
|
||||||
|
# Configuration SSH automatique pour ihm_client
|
||||||
|
# Généré le $(date)
|
||||||
|
|
||||||
|
# Configuration Git
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
|
||||||
|
# Alias Git
|
||||||
|
git config --global alias.ssh-push '!f() { git add . && git commit -m "\${1:-Auto-commit \$(date)}" && git push origin \$(git branch --show-current); }; f'
|
||||||
|
git config --global alias.quick-push '!f() { git add . && git commit -m "Update \$(date)" && git push origin \$(git branch --show-current); }; f'
|
||||||
|
|
||||||
|
# Test SSH
|
||||||
|
ssh -T git@git.4nkweb.com
|
||||||
|
|
||||||
|
# Scripts disponibles
|
||||||
|
./scripts/auto-ssh-push.sh quick
|
||||||
|
./scripts/auto-ssh-push.sh message "Mon message"
|
||||||
|
git ssh-push "Mon message"
|
||||||
|
git quick-push
|
||||||
|
EOF
|
||||||
|
|
||||||
|
print_success "Fichier de configuration créé: .ssh-config"
|
||||||
|
|
||||||
|
# 8. Résumé de la configuration
|
||||||
|
echo ""
|
||||||
|
print_success "=== Configuration SSH terminée ==="
|
||||||
|
echo ""
|
||||||
|
echo "✅ Configuration Git pour SSH"
|
||||||
|
echo "✅ Alias Git configurés"
|
||||||
|
echo "✅ Remotes vérifiés"
|
||||||
|
echo "✅ Scripts configurés"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [[ "$SSH_WORKING" == "true" ]]; then
|
||||||
|
print_success "SSH fonctionne correctement"
|
||||||
|
echo ""
|
||||||
|
echo "🚀 Vous pouvez maintenant utiliser :"
|
||||||
|
echo " ./scripts/auto-ssh-push.sh quick"
|
||||||
|
echo " ./scripts/auto-ssh-push.sh message \"Mon message\""
|
||||||
|
echo " git ssh-push \"Mon message\""
|
||||||
|
echo " git quick-push"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
print_warning "SSH ne fonctionne pas encore"
|
||||||
|
echo ""
|
||||||
|
echo "🔧 Pour configurer SSH :"
|
||||||
|
echo " 1. Générer une clé SSH : ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk"
|
||||||
|
echo " 2. Ajouter à l'agent SSH : ssh-add ~/.ssh/id_ed25519_4nk"
|
||||||
|
echo " 3. Ajouter la clé publique à votre compte Gitea"
|
||||||
|
echo " 4. Relancer ce script : ./scripts/init-ssh-env.sh"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 9. Test final
|
||||||
|
if [[ "$SSH_WORKING" == "true" ]]; then
|
||||||
|
print_status "Test final de push SSH..."
|
||||||
|
echo "💡 Pour tester, utilisez : ./scripts/auto-ssh-push.sh status"
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_success "Initialisation SSH terminée !"
|
79
scripts/setup-ssh-ci.sh
Executable file
79
scripts/setup-ssh-ci.sh
Executable file
@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Script de configuration SSH pour CI/CD ihm_client
|
||||||
|
# Utilise automatiquement la clé SSH pour les opérations Git
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🔑 Configuration automatique de la clé SSH pour ihm_client CI/CD..."
|
||||||
|
|
||||||
|
# Vérifier si on est dans un environnement CI
|
||||||
|
if [ -n "$CI" ]; then
|
||||||
|
echo "✅ Environnement CI détecté"
|
||||||
|
|
||||||
|
# Configuration SSH pour Gitea Actions
|
||||||
|
if [ -n "$SSH_PRIVATE_KEY" ]; then
|
||||||
|
echo "🔐 Configuration de la clé SSH privée..."
|
||||||
|
|
||||||
|
# Créer le répertoire SSH
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
chmod 700 ~/.ssh
|
||||||
|
|
||||||
|
# Écrire la clé privée
|
||||||
|
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
|
||||||
|
chmod 600 ~/.ssh/id_rsa
|
||||||
|
|
||||||
|
# Ajouter la clé publique correspondante (si disponible)
|
||||||
|
if [ -n "$SSH_PUBLIC_KEY" ]; then
|
||||||
|
echo "$SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub
|
||||||
|
chmod 644 ~/.ssh/id_rsa.pub
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configuration SSH pour git.4nkweb.com
|
||||||
|
cat > ~/.ssh/config << EOF
|
||||||
|
Host git.4nkweb.com
|
||||||
|
HostName git.4nkweb.com
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile=/dev/null
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 600 ~/.ssh/config
|
||||||
|
|
||||||
|
# Tester la connexion SSH
|
||||||
|
echo "🧪 Test de connexion SSH vers git.4nkweb.com..."
|
||||||
|
if ssh -T git@git.4nkweb.com 2>&1 | grep -q "Welcome"; then
|
||||||
|
echo "✅ Connexion SSH réussie"
|
||||||
|
else
|
||||||
|
echo "⚠️ Connexion SSH établie (message de bienvenue non détecté)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configurer Git pour utiliser SSH
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
|
||||||
|
echo "✅ Configuration SSH terminée"
|
||||||
|
else
|
||||||
|
echo "⚠️ Variable SSH_PRIVATE_KEY non définie, utilisation de HTTPS"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "ℹ️ Environnement local détecté"
|
||||||
|
|
||||||
|
# Vérifier si une clé SSH existe
|
||||||
|
if [ -f ~/.ssh/id_rsa ]; then
|
||||||
|
echo "🔑 Clé SSH locale trouvée"
|
||||||
|
|
||||||
|
# Configurer Git pour utiliser SSH localement
|
||||||
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||||
|
|
||||||
|
echo "✅ Configuration SSH locale terminée"
|
||||||
|
else
|
||||||
|
echo "⚠️ Aucune clé SSH trouvée, configuration manuelle requise"
|
||||||
|
echo "💡 Pour configurer SSH manuellement :"
|
||||||
|
echo " 1. Générer une clé SSH : ssh-keygen -t rsa -b 4096"
|
||||||
|
echo " 2. Ajouter la clé publique à votre compte Gitea"
|
||||||
|
echo " 3. Tester : ssh -T git@git.4nkweb.com"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🎯 Configuration SSH terminée pour ihm_client"
|
Loading…
x
Reference in New Issue
Block a user