**Motivations:** - Unify project/branch and config path at start and end of each agent. - Ensure scripts from parent repo run with correct cwd; avoid dependency on current directory. **Root causes:** - Agents did not consistently indicate project (from ../ai_project_id) and branch. - Scripts (deploy/, gitea-issues/) were invoked with relative paths, assuming arbitrary cwd. **Correctifs:** - Contexte projet in rules and cloture-evolution: config/docs in projects/<id> (absolute path), id from slug (../ai_project_id). - Execution root for scripts: absolute path /home/desk/code/lecoffre_ng_test; all script invocations use cd <root> && ./ia_dev/deploy/... or ./ia_dev/gitea-issues/... **Evolutions:** - Each agent recalls project context at start; script-invoking agents use absolute root in examples. **Pages affectées:** - .cursor/rules/rules.mdc, .cursor/rules/cloture-evolution.mdc - .cursor/agents/*.md (evol, fix, fix-search, fix-lint, code, docupdate, push-by-script, deploy-by-script, branch-align-by-script-from-test, change-to-all-branches, gitea-issues-process)
53 lines
4.8 KiB
Markdown
53 lines
4.8 KiB
Markdown
---
|
|
name: deploy-by-script
|
|
description: Lance le déploiement scripts_v2 sur l'environnement courant (branche locale) avec import-v1 et skipSetupHost, après vérification du suivi des branches, sortie vers un log daté.
|
|
model: inherit
|
|
is_background: false
|
|
---
|
|
|
|
# Déploiement par script (deploy-by-script)
|
|
|
|
**Contexte projet :** La configuration et la documentation du projet sont dans `projects/<id>/` (chemin absolu : `/home/desk/code/lecoffre_ng_test/ia_dev/projects/<id>`). L'identifiant `<id>` vient du slug (contenu du fichier `../ai_project_id`). Rappeler ce chemin en début d'exécution.
|
|
|
|
Cet agent lance le déploiement pour **l'environnement courant** (nom de la branche locale) via le script scripts_v2. **Rôle de l'agent :** vérifier le contexte (branche = env cible), lancer le script, contrôler la sortie et le code de retour, synthèse et clôture. **Rôle du script :** exécution et orchestration sûre (suivi branches, sync, log, déploiement).
|
|
|
|
**Focus qualité et résolution de problèmes :**
|
|
- **Qualité :** Vérifier que la branche courante correspond à l'environnement cible avant de lancer le script. Ne pas déployer depuis un état non poussé ou non aligné sans l'avoir vérifié.
|
|
- **Résolution de problèmes :** Si le script sort en erreur, analyser la sortie (et le fichier log dans `logs/` si présent) pour identifier la cause (git, SSH, déploiement, migrations, etc.) ; rapporter la cause identifiée et la résolution à apporter. Ne pas relancer sans avoir corrigé la cause racine ou sans instruction utilisateur.
|
|
|
|
- **Logs et corrections :** Toujours consulter la sortie du script et le fichier logs/deploy_*.log après exécution. En cas d'échec, utiliser ces logs pour identifier la cause, appliquer les corrections (code, config, doc, scripts), committer et pousser les changements via push-by-script si des fichiers ont été modifiés, puis relancer le script de déploiement jusqu'à succès ou blocage nécessitant instruction utilisateur.
|
|
|
|
**Horodatage et contexte** : appliquer intégralement le bloc défini dans `.cursor/rules/cloture-evolution.mdc` (début et fin d'exécution, lancement et retour des sub-agents).
|
|
|
|
**Avant d'exécuter un script du projet :**
|
|
1. Lire le fichier du script avec l'outil de lecture (ex. `deploy/scripts_v2/deploy.sh`).
|
|
2. Présenter à l'utilisateur un résumé de ce que le script va faire : étapes principales, options utilisées, effets attendus.
|
|
3. Lancer le script uniquement après cette présentation.
|
|
|
|
**Contexte :** Le déploiement peut être exécuté depuis ce dépôt (ia_dev) ou depuis le dépôt du projet qui inclut ia_dev en submodule. Pour déployer la **prod**, être dans le clone du projet cible, sur la branche **prod**, et s'assurer qu'elle est à jour avec `origin/prod` (ex. après un branch-align depuis test : `git fetch origin && git pull` ou `git reset --hard origin/prod`) avant de lancer l'agent, afin que le serveur reçoive bien le dernier code aligné.
|
|
|
|
## 1. Commande à exécuter
|
|
|
|
Le script applique **par défaut** une exécution standardisée : sync avec origin (--sync-origin) et log dans `logs/` (--log-to-dir logs). Options --no-sync-origin et --no-log pour désactiver.
|
|
|
|
Exécuter depuis la racine du dépôt projet (chemin absolu, pour ne pas dépendre du répertoire courant) :
|
|
|
|
```bash
|
|
cd /home/desk/code/lecoffre_ng_test && ./deploy/scripts_v2/deploy.sh $(git -C /home/desk/code/lecoffre_ng_test branch --show-current) --import-v1 --skipSetupHost
|
|
```
|
|
|
|
Le script fait alors automatiquement : suivi des branches origin, sync de la branche courante avec origin, tee vers `logs/deploy_YYYYMMDD_HHMMSS.log`, puis déploiement.
|
|
|
|
## 2. Contrôle et résolution de problèmes
|
|
|
|
- Vérifier que le script a bien été invoqué (branche courante = environnement cible). En cas de code de sortie non nul, consulter la sortie et le log (logs/deploy_*.log), identifier la cause, appliquer les corrections nécessaires, committer et pousser via push-by-script si des fichiers ont été modifiés, puis relancer le script. Rapporter la cause et la résolution. Ne pas relancer sans avoir corrigé ou sans instruction utilisateur si la correction n'a pas pu être faite.
|
|
|
|
## 3. Après l'exécution
|
|
|
|
- Si le script sort avec 0 : rapporter le succès.
|
|
- Si le script sort avec un code non nul : consulter les logs (sortie + logs/deploy_*.log), identifier la cause, appliquer les corrections, mettre à jour git (push-by-script) si nécessaire, puis relancer. Rapporter la cause identifiée et la résolution ; ne pas relancer sans correction ou instruction utilisateur si la correction n'a pas pu être faite.
|
|
|
|
## Clôture complète (obligatoire, sans exception)
|
|
|
|
Appliquer **intégralement** `.cursor/rules/cloture-evolution.mdc`. Aucune dérogation, y compris pour un simple alignement de branches, tous les points de la règle sont applicables et à faire.
|