Etat initial - Agents and project docs still referenced --skipSetupHost, --import-v1 on CLI, and optional log flags. Motivation du changement - Align ia_dev agents and mirrored docs with LeCoffre deploy.sh (setup via run-setup-host.sh, business flags in deploy.conf only, logs always on). Resolution - Add .cursor/agents/setup-host.md; update change-to-all-branches, deploy-by-script, deploy-pprod-or-prod; refresh agents-scripts-split and WORKFLOWS for lecoffreio and ia_dev projects. Root cause - Documentation drift after deploy CLI and pipeline changes. Fonctionnalités impactées - Cursor agent instructions only (no runtime code path change in this commit beyond files listed). Code modifié - .cursor/agents/*.md, deploy/*.sh, deploy/lib/*.sh, projects/*/docs/*.md as staged. Documentation modifiée - projects/lecoffreio/docs/agents-scripts-split.md, WORKFLOWS_AND_COMPONENTS.md; projects/ia_dev/docs/* (same). Configurations modifiées - none. Fichiers dans déploy modifiés - deploy/change-to-all-branches.sh, deploy-by-script-to.sh, deploy.sh, lib/README.md, deploy-conf-handling.sh, deploy-methodology.sh, orchestrator.sh (pre-existing session changes + doc alignment). Fichiers dans logs impactés - none. Bases de données et autres sources modifiées - none. Modifications hors projet - none. fichiers dans .cursor/ modifiés - .cursor/agents/setup-host.md (new), change-to-all-branches.md, deploy-by-script.md, deploy-pprod-or-prod.md. fichiers dans .secrets/ modifiés - none. nouvelle sous sous version dans VERSION - N/A (ia_dev repo has no VERSION file). CHANGELOG.md mise à jour (oui/non) - non
171 lines
7.7 KiB
Markdown
171 lines
7.7 KiB
Markdown
# Répartition agent / script (agents lançant des scripts)
|
||
|
||
**Objectif :** Exploiter au mieux la valeur ajoutée de l’agent (orchestration, contenu structuré, règles projet) et du script (déterminisme, reproductibilité, exécutable sans LLM).
|
||
|
||
## Principes
|
||
|
||
| Rôle | Agent | Script |
|
||
|------|--------|--------|
|
||
| **Orchestration** | Ordre des étapes, invocation d’autres agents (push, docupdate, etc.) | Une seule responsabilité par script |
|
||
| **Contenu** | Message de commit structuré, CHANGELOG, décisions métier | Pas de génération de texte |
|
||
| **Règles projet** | Clôture (cloture-evolution.mdc), 5 sub-agents, docupdate | Contraintes techniques (auteur, chemins sensibles, branche) |
|
||
| **Déterminisme** | — | Vérifications git, chemins, options reproductibles |
|
||
| **Réutilisabilité** | Contexte Cursor | CLI / humain / CI sans agent |
|
||
|
||
---
|
||
|
||
## 1. branch-align-by-script-from-test
|
||
|
||
**Agent aujourd’hui :**
|
||
|
||
- Horodatage, clôture
|
||
- `cd` racine projet
|
||
- Lancer push-by-script puis docupdate puis `./deploy/branch-align.sh <env>`
|
||
- Ne pas masquer la sortie
|
||
|
||
**Script branch-align.sh aujourd’hui :**
|
||
|
||
- Vérif repo git, argument env, branche courante = env
|
||
- Fetch, force-push with lease, alignement test/pprod/prod, vérifications
|
||
|
||
**Déplacé dans le script :**
|
||
|
||
- **Exécution depuis racine du dépôt :** si le script est invoqué hors racine, se ré-exécuter depuis `git rev-parse --show-toplevel` pour que `./deploy/branch-align.sh` soit utilisable depuis n’importe quel sous-dossier.
|
||
|
||
**Reste dans l’agent :**
|
||
|
||
- Ordre push → docupdate → branch-align
|
||
- Invocation des agents push-by-script et docupdate
|
||
- Clôture complète
|
||
|
||
---
|
||
|
||
## 2. change-to-all-branches
|
||
|
||
**Agent aujourd’hui :**
|
||
|
||
- Vérifier branche = test (sinon retour 1)
|
||
- Lancer /push-by-script, /branch-align-by-script-from-test, /deploy-by-script
|
||
- Retour 0
|
||
|
||
**Déplacé dans un script :**
|
||
|
||
- **Nouveau script `deploy/change-to-all-branches.sh` :**
|
||
- Vérifier que la branche courante est `test` (sinon exit 1)
|
||
- Exécuter `./deploy/branch-align.sh test`
|
||
- Exécuter `orchestrator.sh` ou `./deploy/scripts_v2/deploy.sh test --no-sync-origin` (métier via `$SECRETS_BASE/test/deploy.conf`) ; setup hôte : `run-setup-host.sh`, pas `deploy.sh`
|
||
- À lancer depuis la racine du dépôt (le script peut faire `cd` vers la racine git au démarrage)
|
||
|
||
**Reste dans l’agent :**
|
||
|
||
- Lancer /push-by-script (message de commit fourni par l’agent)
|
||
- Puis lancer le script `deploy/change-to-all-branches.sh` (alignement + déploiement)
|
||
- Pas d’appel à branch-align-by-script-from-test ni deploy-by-script séparés : un seul script enchaîne align + deploy
|
||
|
||
---
|
||
|
||
## 3. deploy-by-script
|
||
|
||
**Agent aujourd’hui :**
|
||
|
||
- Vérifier le suivi des branches (main/test/pprod/prod → origin/…), corriger avec `git branch --set-upstream-to`
|
||
- S’assurer que la branche courante est à jour : `git fetch origin` puis `git reset --hard origin/$(git branch --show-current)`
|
||
- `mkdir -p logs`, puis exécuter le script avec `tee logs/deploy_*.log`
|
||
- Ne pas masquer la sortie
|
||
|
||
**Script deploy.sh aujourd’hui :**
|
||
|
||
- Env, options, dotenv, vérifs git (DEPLOY_GIT_REMOTE, synchro), déploiement
|
||
|
||
**Déplacé dans le script :**
|
||
|
||
- **Pré-vérification du suivi des branches :** au début de `deploy.sh`, après `PROJECT_ROOT` et validation de `ENV` : `git fetch origin` puis pour chaque branche locale parmi main, test, pprod, prod définir l’upstream `origin/<branch>` si la branche existe. Pas de `reset --hard` dans le script (le flux deploy utilise le remote `lecoffre_ng` ; le sync avec `origin` reste à l’agent avant d’appeler le script).
|
||
|
||
**Reste dans l’agent :**
|
||
|
||
- S’assurer que la branche courante est à jour avec sa branche distante (`git fetch` puis `git reset --hard origin/$(git branch --show-current)`)
|
||
- Créer `logs/` et lancer le script avec `tee` vers un log daté
|
||
- Clôture complète
|
||
|
||
---
|
||
|
||
## 4. push-by-script
|
||
|
||
**Agent aujourd’hui :**
|
||
|
||
- Construire le message de commit (toutes les sections obligatoires)
|
||
- Mettre à jour CHANGELOG.md
|
||
- Mettre à jour VERSION (incrément sous-sous-version)
|
||
- Exécuter `./deploy/pousse.sh` avec le message sur STDIN
|
||
|
||
**Script pousse.sh aujourd’hui :**
|
||
|
||
- Lire le message sur STDIN, `git add -A`, vérifications (auteur, chemins sensibles, branche distante), commit, push
|
||
|
||
**Déplacé dans le script :**
|
||
|
||
- **Option `--bump-version` :** avant le `git add -A`, lire le fichier `VERSION` à la racine du dépôt, incrémenter le troisième segment (patch), réécrire `VERSION`. Ensuite `git add -A` inclura le fichier modifié. L’agent n’a plus à éditer VERSION à la main ; il fournit le message (en mentionnant la nouvelle sous-sous-version si besoin) et peut appeler `pousse.sh --bump-version`.
|
||
|
||
**Reste dans l’agent :**
|
||
|
||
- Construction du message de commit (toutes les sections)
|
||
- Mise à jour de CHANGELOG.md
|
||
- Invocation de `./deploy/pousse.sh` (avec `--bump-version` si souhaité)
|
||
- Clôture complète
|
||
|
||
---
|
||
|
||
## Synthèse des implémentations
|
||
|
||
| Fichier | Modification |
|
||
|---------|--------------|
|
||
| `deploy/branch-align.sh` | Ré-exécution depuis la racine git si nécessaire |
|
||
| `deploy/scripts_v2/deploy.sh` | Par défaut sync `--sync-origin` ; tee toujours vers `logs/deploy_*.log` ; `--no-sync-origin` pour désactiver le sync local ; métier uniquement `deploy.conf` |
|
||
| `deploy/pousse.sh` | **Ré-exéc depuis racine** si besoin ; option --bump-version ; build check (ressources, backend, frontend) avant staging |
|
||
| `deploy/change-to-all-branches.sh` | Vérif branche test, branch-align.sh test, orchestrateur ou deploy.sh test --no-sync-origin ; logs `./logs/` |
|
||
| Agents .cursor/agents/*.md | Adapter les consignes pour utiliser les nouvelles options/scripts et alléger les étapes redondantes |
|
||
|
||
---
|
||
|
||
## Deuxième passe (agent = contrôle / script = exécution)
|
||
|
||
**Principe :** L'agent assure vérifications, corrections, relances, synthèses et textes. Le script assure l'exécution et l'orchestration déterministe.
|
||
|
||
### deploy-by-script / deploy.sh
|
||
|
||
- **Dans le script :** `--sync-origin` / `--no-sync-origin` ; tee fixe vers `logs/deploy_*.log`.
|
||
- **Dans l'agent :** lancer le script depuis ia_dev ou racine projet selon conf, contrôler la sortie et le code de retour.
|
||
|
||
### push-by-script / pousse.sh
|
||
|
||
- **Dans le script :** build check (npm run build pour les trois projets dev) avant staging ; en cas d'échec, sortie en erreur sans commit ni push.
|
||
- **Dans l'agent :** construire le message, mettre à jour CHANGELOG, lancer le script, contrôler sortie et code de retour.
|
||
|
||
### Tous les agents
|
||
|
||
- Chaque agent précise en en-tête **Rôle de l'agent** et **Rôle du script**.
|
||
- Consignes redondantes retirées ou raccourcies au profit du contrôle (sortie non masquée, code de retour, rapport succès ou erreur).
|
||
|
||
---
|
||
|
||
## Troisième passe (priorité : exécution standardisée dans le script)
|
||
|
||
**Principe :** Tout ce qui peut être standardisé est dans le script pour garantir la même exécution à chaque run.
|
||
|
||
### deploy.sh
|
||
|
||
- **Par défaut :** `SYNC_ORIGIN=true`, journalisation fichier toujours active sous `logs/`. **Désactivation sync :** `--no-sync-origin`. Métier : `deploy.conf` uniquement. Setup OS : `deploy/scripts_v2/run-setup-host.sh` (agent `/setup-host`).
|
||
|
||
### pousse.sh
|
||
|
||
- **Ré-exécution depuis la racine :** si le script est appelé hors racine du dépôt, il se ré-exécute depuis `git rev-parse --show-toplevel`. Exécution toujours depuis la racine (comme branch-align.sh et change-to-all-branches.sh).
|
||
|
||
### change-to-all-branches.sh
|
||
|
||
- Appelle `deploy.sh test --no-sync-origin` ou orchestrateur équivalent (après push ; métier dans `deploy.conf`).
|
||
|
||
### Agents
|
||
|
||
- deploy-by-script : commande alignée sur `deploy.conf` ; sync/log gérés par `deploy.sh` (voir usage actuel).
|
||
- push-by-script : le script peut être appelé depuis n'importe quel sous-dossier.
|