From 4d4264fc41392930c06706bca658aef3cd235f6a Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Mon, 23 Mar 2026 14:02:58 +0100 Subject: [PATCH] docs(agents+deploy): setup-host agent, deploy flags doc sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .cursor/agents/change-to-all-branches.md | 4 +-- .cursor/agents/deploy-by-script.md | 4 +-- .cursor/agents/deploy-pprod-or-prod.md | 2 +- .cursor/agents/setup-host.md | 30 +++++++++++++++++++ deploy/change-to-all-branches.sh | 8 ++--- deploy/deploy-by-script-to.sh | 6 ++-- deploy/deploy.sh | 5 ++-- deploy/lib/README.md | 2 +- deploy/lib/deploy-conf-handling.sh | 25 +++++++++++++++- deploy/lib/deploy-methodology.sh | 5 ---- deploy/orchestrator.sh | 2 +- .../ia_dev/docs/WORKFLOWS_AND_COMPONENTS.md | 2 +- projects/ia_dev/docs/agents-scripts-split.md | 17 +++++------ .../docs/WORKFLOWS_AND_COMPONENTS.md | 2 +- .../lecoffreio/docs/agents-scripts-split.md | 17 +++++------ 15 files changed, 88 insertions(+), 43 deletions(-) create mode 100644 .cursor/agents/setup-host.md diff --git a/.cursor/agents/change-to-all-branches.md b/.cursor/agents/change-to-all-branches.md index 703e8aa..0c8cc01 100644 --- a/.cursor/agents/change-to-all-branches.md +++ b/.cursor/agents/change-to-all-branches.md @@ -40,7 +40,7 @@ En tant qu'agent, avant de solliciter l'ia, regarde ce que tu peux scripter (imp **Documentation** : La doc des projets gérés est dans **`projects//docs`** ; la doc ia_dev est dans **`projects/ia_dev/docs`**. -**Rôle de l’agent :** vérifier que la branche locale est test (sinon retour 1), fournir le message de commit (via /push-by-script), lancer le script, contrôler la sortie et le code de retour. **Rôle du script :** exécution déterministe (vérif branche test, branch-align.sh test, deploy.sh test --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut). +**Rôle de l’agent :** vérifier que la branche locale est test (sinon retour 1), fournir le message de commit (via /push-by-script), lancer le script, contrôler la sortie et le code de retour. **Rôle du script :** exécution déterministe (vérif branche test, `branch-align.sh test`, orchestrateur ou `deploy.sh test --no-sync-origin` ; flags métier uniquement via `$SECRETS_BASE/test/deploy.conf` ; journalisation toujours `./logs/deploy_*.log`). Préparation OS cible : agent **`/setup-host`** + `deploy/scripts_v2/run-setup-host.sh`, pas `deploy.sh`. **Focus qualité et résolution de problèmes :** @@ -67,7 +67,7 @@ Si la branche locale actuelle n'est pas test, retourner 1. Uniquement en test (branche git), exécuter dans l'ordre : 1. **/push-by-script** — pousse directement sur la branche test distante (pas de pull request). Message de commit fourni par l'agent. -2. **Exécuter depuis la racine de ia_dev** : `./deploy/change-to-all-branches.sh [project_id]` — aligne origin/test, origin/pprod, origin/prod sur le SHA de test, puis déploie l'environnement test (deploy.sh avec --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut). project_id optionnel pour cibler le projet. Push direct uniquement ; aucun script ni agent ne crée de pull request. +2. **Exécuter depuis la racine de ia_dev** : `./deploy/change-to-all-branches.sh [project_id]` — aligne origin/test, origin/pprod, origin/prod sur le SHA de test, puis déploie l'environnement test (`orchestrator.sh` ou `deploy.sh test --no-sync-origin` ; métier via `deploy.conf` ; logs `./logs/`). project_id optionnel pour cibler le projet. Push direct uniquement ; aucun script ni agent ne crée de pull request. - **Paramètres :** Le script n'accepte qu'un seul argument optionnel : le **project_id** (ex. lecoffreio). La branche est toujours **test** (imposée par le script, pas un paramètre). Si l'utilisateur fournit deux tokens (ex. « test lecoffreio » ou « lecoffreio test »), extraire celui qui correspond à un projet (existence de `projects//conf.json`) et appeler le script avec uniquement ce project_id : `./deploy/change-to-all-branches.sh lecoffreio`. - **Pas de timeout :** Ne pas lancer la commande avec un timeout court (ex. 5 min). Le déploiement (build, migrations, import-v1, redémarrage services, vérifications) peut durer 10 à 30 min ; utiliser un timeout long ou aucun timeout pour laisser le script aller au bout. diff --git a/.cursor/agents/deploy-by-script.md b/.cursor/agents/deploy-by-script.md index 4912478..fcbbc2a 100644 --- a/.cursor/agents/deploy-by-script.md +++ b/.cursor/agents/deploy-by-script.md @@ -1,6 +1,6 @@ --- 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é. +description: Lance le déploiement scripts_v2 sur l'environnement courant (branche locale), après vérification du suivi des branches ; métier via deploy.conf ; sortie vers logs/deploy_*.log. model: inherit is_background: false --- @@ -52,7 +52,7 @@ Cet agent lance le déploiement pour **l'environnement courant** (nom de la bran ## 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. +Le script applique **par défaut** une exécution standardisée : sync avec origin (`--sync-origin`, désactivable avec `--no-sync-origin`). La sortie est **toujours** enregistrée sous `logs/deploy_*.log`. Préparation paquets sur la cible : **`/setup-host`** + `deploy/scripts_v2/run-setup-host.sh`, pas `deploy.sh`. Exécuter depuis la racine de ia_dev. Le script deploy utilise les chemins absolus de `projects//conf.json` (deploy.deploy_script_path, deploy.secrets_path). Pour cibler un projet explicitement : passer l’id en premier argument, ex. `./deploy/deploy-by-script-to.sh lecoffreio prod` (ou utiliser MAIL_TO / AI_AGENT_TOKEN). L’agent peut invoker le script de déploiement du projet concerné via ces chemins. diff --git a/.cursor/agents/deploy-pprod-or-prod.md b/.cursor/agents/deploy-pprod-or-prod.md index caaa07d..a78fa19 100644 --- a/.cursor/agents/deploy-pprod-or-prod.md +++ b/.cursor/agents/deploy-pprod-or-prod.md @@ -46,7 +46,7 @@ En tant qu'agent, avant de solliciter l'ia, regarde ce que tu peux scripter (imp 3. **Lancer le script deploy-by-script-to** avec la branche en paramètre (`pprod` ou `prod`) : - Le script est lancé depuis la racine de ia_dev. Avec project_id (optionnel), MAIL_TO ou AI_AGENT_TOKEN le dépôt cible est celui de la conf (deploy.secrets_path). Lancer : `./deploy/deploy-by-script-to.sh [project_id] `. - - Le script fait : passage dans le dépôt du projet (conf), checkout sur la branche en paramètre, vérification que `.secrets/` existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (deploy.sh avec --import-v1 --skipSetupHost), checkout test. + - Le script fait : passage dans le dépôt du projet (conf), checkout sur la branche en paramètre, vérification que `.secrets/` existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (orchestrateur ou `deploy.sh` ; flags métier via `deploy.conf` uniquement), checkout test. - **Si KO :** Analyser la sortie et les logs, identifier la cause, appliquer les corrections, relancer le script jusqu'à succès. - **Si OK :** Passer à l'étape 4. diff --git a/.cursor/agents/setup-host.md b/.cursor/agents/setup-host.md new file mode 100644 index 0000000..29ebdd0 --- /dev/null +++ b/.cursor/agents/setup-host.md @@ -0,0 +1,30 @@ +--- +name: setup-host +description: Préparation OS/paquets sur la cible via le script normalisé deploy/scripts_v2/run-setup-host.sh (hors deploy.sh), depuis le repository_root du projet (conf.json). +model: inherit +is_background: false +--- + +## Rationalisation tokens + +- Contexte minimal : résoudre `projects//conf.json` → `deploy.repository_root`, puis exécuter le script normalisé sous cette racine. +- Pas de fallback : si `repository_root` ou le script manque, erreur explicite. + +# Agent setup-host (générique ia_dev) + +## Règle d’exécution intégrale + +1. **Horodatage et contexte** : début/fin — date/heure ISO, branche git du dépôt **ia_dev**, `pwd`, **project id** (`IA_PROJECT_ID`, premier argument, ou résolution MAIL_TO / AI_AGENT_TOKEN selon `projects/README.md`). +2. **Résolution** : lire `projects//conf.json` avec `jq` si disponible ; exiger `deploy.repository_root` (répertoire existant). +3. **Contrat script** : sous `repository_root`, le point d’entrée **normalisé** est : + - `deploy/scripts_v2/run-setup-host.sh` +4. **Invocation** : depuis la racine du dépôt projet (`cd "$(jq -r '.deploy.repository_root' conf.json)"` ou équivalent) : + - `bash deploy/scripts_v2/run-setup-host.sh ` + - L’environnement doit être passé explicitement (pas de valeur par défaut métier). +5. **Secrets** : le script charge `.secrets//.env.` via `SECRETS_BASE` / `repo-and-secrets.sh` comme `deploy.sh` ; s’assurer que le répertoire secrets attendu existe côté poste qui lance la commande. +6. **Sortie** : ne pas masquer stdout/stderr ; en échec, relire les messages sudo / SSH. +7. **Clôture** : appliquer `.cursor/rules/cloture-evolution.mdc` en fin d’exécution agent (horodatage, questions 3–11 selon périmètre touché). + +## Projets sans script normalisé + +Si `run-setup-host.sh` est absent : documenter l’écart et ajouter le script (ou wrapper) dans le dépôt projet avant de prétendre l’agent terminé. diff --git a/deploy/change-to-all-branches.sh b/deploy/change-to-all-branches.sh index f37470c..0fd0215 100755 --- a/deploy/change-to-all-branches.sh +++ b/deploy/change-to-all-branches.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# From branch test only: align origin/test, origin/pprod, origin/prod then deploy to test (import-v1, skipSetupHost). +# From branch test only: align origin/test, origin/pprod, origin/prod then deploy to test (see $SECRETS_BASE/test/deploy.conf for RUN_IMPORT_V1 etc.). # Usage: ./deploy/change-to-all-branches.sh [project_id] set -euo pipefail @@ -46,11 +46,11 @@ echo "[change-to-all-branches] Aligning branches..." # scripts_v2 lives in the host project's deploy/ (not necessarily under ia_dev) DEPLOY_SCRIPTS_V2="${PROJECT_ROOT}/deploy/scripts_v2" -echo "[change-to-all-branches] Deploying test (--import-v1 --skipSetupHost, --no-sync-origin because we just pushed)..." +echo "[change-to-all-branches] Deploying test (--no-sync-origin; business flags from deploy.conf only)..." if [[ -n "${IA_PROJECT_ID:-}" && -x "${DEPLOY_DIR}/orchestrator.sh" ]]; then - "${DEPLOY_DIR}/orchestrator.sh" test --import-v1 --skipSetupHost --no-sync-origin + "${DEPLOY_DIR}/orchestrator.sh" test --no-sync-origin else - "${DEPLOY_SCRIPTS_V2}/deploy.sh" test --import-v1 --skipSetupHost --no-sync-origin + "${DEPLOY_SCRIPTS_V2}/deploy.sh" test --no-sync-origin fi echo "[change-to-all-branches] OK" diff --git a/deploy/deploy-by-script-to.sh b/deploy/deploy-by-script-to.sh index feb85d9..e5ab6ab 100755 --- a/deploy/deploy-by-script-to.sh +++ b/deploy/deploy-by-script-to.sh @@ -73,16 +73,16 @@ echo "[deploy-by-script-to] Step 3/5: force sync local branch with origin/${TARG git fetch origin git reset --hard "origin/${TARGET_BRANCH}" -echo "[deploy-by-script-to] Step 4/5: deploy ${TARGET_BRANCH} (--import-v1 --skipSetupHost)..." +echo "[deploy-by-script-to] Step 4/5: deploy ${TARGET_BRANCH} (business flags from deploy.conf only)..." if [[ -n "${IA_PROJECT_ID:-}" && -x "${DEPLOY_IA}/orchestrator.sh" ]]; then - "${DEPLOY_IA}/orchestrator.sh" "$TARGET_BRANCH" --import-v1 --skipSetupHost + "${DEPLOY_IA}/orchestrator.sh" "$TARGET_BRANCH" else deploy_script="$PROJECT_ROOT/deploy/scripts_v2/deploy.sh" if [[ -n "${PROJECT_CONFIG_PATH:-}" && -f "${PROJECT_CONFIG_PATH:-}" ]] && command -v jq >/dev/null 2>&1; then _cfg_script="$(jq -r '.deploy.deploy_script_path // ""' "$PROJECT_CONFIG_PATH" 2>/dev/null)" [[ -n "$_cfg_script" && -x "$_cfg_script" ]] && deploy_script="$_cfg_script" fi - "$deploy_script" "$TARGET_BRANCH" --import-v1 --skipSetupHost + "$deploy_script" "$TARGET_BRANCH" fi echo "[deploy-by-script-to] Step 5/5: checkout test..." diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 2beef71..b263175 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Generic deploy entry from ia_dev: shared methodology (envs, contract), then ia_dev orchestrator → project orchestrator. # Usage (from ia_dev root): ./deploy/deploy.sh [options…] -# Example: ./deploy/deploy.sh lecoffreio test --import-v1 --skipSetupHost +# Example: ./deploy/deploy.sh lecoffreio test --no-sync-origin set -euo pipefail SCRIPT_REAL="$(readlink -f "${BASH_SOURCE[0]:-$0}" 2>/dev/null || realpath "${BASH_SOURCE[0]:-$0}" 2>/dev/null || echo "${BASH_SOURCE[0]:-$0}")" @@ -14,7 +14,7 @@ source "${DEPLOY_DIR}/lib/deploy-methodology.sh" if [[ $# -lt 2 ]]; then echo "[deploy][ERROR] Missing arguments" >&2 echo "Usage: $0 [options passed to project orchestrator]" >&2 - echo "Example: $0 lecoffreio test --import-v1 --skipSetupHost" >&2 + echo "Example: $0 lecoffreio test --no-sync-origin" >&2 exit 1 fi @@ -25,7 +25,6 @@ if [[ ! -f "$CONF" ]]; then fi ia_dev_deploy_assert_env_literal "${2}" || exit 1 -ia_dev_deploy_log_methodology_banner export IA_PROJECT_ID="$1" shift diff --git a/deploy/lib/README.md b/deploy/lib/README.md index 5f105b8..9d66894 100644 --- a/deploy/lib/README.md +++ b/deploy/lib/README.md @@ -23,7 +23,7 @@ Quality gates and longer sequences that are identical across projects should be ## `deploy-conf-handling.sh` -Shared **conf.json** handling: `jq` requirement, `deploy.secrets_path` → `SECRETS_BASE` / `LECOFFRE_SECRETS_BASE`, optional exports `IA_DEV_DEPLOY_REPO_ROOT` and `IA_DEV_DEPLOY_ENV` for project scripts. Sourced by **`orchestrator.sh`**. Add new generic `deploy.*` reads here. +Shared **conf.json** handling: `jq` requirement, `deploy.secrets_path` → `SECRETS_BASE` / `LECOFFRE_SECRETS_BASE`, exports **`IA_DEV_DEPLOY_REPO_ROOT`** and **`IA_DEV_DEPLOY_ENV`** (mandatory handoff: `ia_dev_deploy_assert_handoff_context` exits if unset or inconsistent — no fallback). Sourced by **`orchestrator.sh`**. Add new generic `deploy.*` reads here. ## Orchestration (`../orchestrator.sh`, `../deploy.sh`) diff --git a/deploy/lib/deploy-conf-handling.sh b/deploy/lib/deploy-conf-handling.sh index d74047e..dcd95b7 100644 --- a/deploy/lib/deploy-conf-handling.sh +++ b/deploy/lib/deploy-conf-handling.sh @@ -23,10 +23,33 @@ ia_dev_deploy_secrets_export_from_conf() { fi } -# ia_dev_deploy_export_runtime_context — optional hints for project orchestrator scripts +# ia_dev_deploy_export_runtime_context — required handoff to project orchestrator (blocking checks below) ia_dev_deploy_export_runtime_context() { local repo="${1:?}" local env="${2:?}" export IA_DEV_DEPLOY_REPO_ROOT="$repo" export IA_DEV_DEPLOY_ENV="$env" } + +# ia_dev_deploy_assert_handoff_context — exit 1 if exports missing or inconsistent (no fallback) +ia_dev_deploy_assert_handoff_context() { + local repo="${1:?}" + local env="${2:?}" + local tag="${3:-[orchestrator]}" + if [[ -z "$repo" || ! -d "$repo" ]]; then + echo "${tag}[ERROR] Handoff: repository root invalid or not a directory: ${repo}" >&2 + exit 1 + fi + if [[ -z "$env" ]]; then + echo "${tag}[ERROR] Handoff: env is empty" >&2 + exit 1 + fi + if [[ "${IA_DEV_DEPLOY_REPO_ROOT:-}" != "$repo" ]]; then + echo "${tag}[ERROR] Handoff: IA_DEV_DEPLOY_REPO_ROOT mismatch or unset (expected ${repo})" >&2 + exit 1 + fi + if [[ "${IA_DEV_DEPLOY_ENV:-}" != "$env" ]]; then + echo "${tag}[ERROR] Handoff: IA_DEV_DEPLOY_ENV mismatch or unset (expected ${env}, got ${IA_DEV_DEPLOY_ENV:-})" >&2 + exit 1 + fi +} diff --git a/deploy/lib/deploy-methodology.sh b/deploy/lib/deploy-methodology.sh index f24d4cf..f46889f 100644 --- a/deploy/lib/deploy-methodology.sh +++ b/deploy/lib/deploy-methodology.sh @@ -47,8 +47,3 @@ ia_dev_deploy_assert_env_literal() { fi return 0 } - -# ia_dev_deploy_log_methodology_banner — optional trace for support -ia_dev_deploy_log_methodology_banner() { - echo "[ia_dev][deploy] Methodology: envs={${IA_DEV_DEPLOY_ENVS[*]}} ; project orchestrator invoked after conf + secrets export (see orchestrator.sh)." -} diff --git a/deploy/orchestrator.sh b/deploy/orchestrator.sh index 54a014c..a3eb413 100755 --- a/deploy/orchestrator.sh +++ b/deploy/orchestrator.sh @@ -23,7 +23,6 @@ if [[ -z "${IA_PROJECT_ID:-}" ]]; then fi ia_dev_deploy_assert_first_arg_env "$@" || exit 1 -ia_dev_deploy_log_methodology_banner # shellcheck source=../lib/project_config.sh source "${IA_DEV_ROOT}/lib/project_config.sh" @@ -45,6 +44,7 @@ fi ia_dev_deploy_require_jq "${_ORCH_TAG}" ia_dev_deploy_secrets_export_from_conf "$CONF" ia_dev_deploy_export_runtime_context "$REPO_ROOT" "${1:-}" +ia_dev_deploy_assert_handoff_context "$REPO_ROOT" "${1:-}" "${_ORCH_TAG}" DEPLOY_SCRIPT_PATH="$(jq -r '.deploy.deploy_script_path // empty' "$CONF")" PROJECT_ORCH_REL="$(jq -r '.deploy.project_orchestrator_path // empty' "$CONF")" diff --git a/projects/ia_dev/docs/WORKFLOWS_AND_COMPONENTS.md b/projects/ia_dev/docs/WORKFLOWS_AND_COMPONENTS.md index a2f0128..fd21558 100644 --- a/projects/ia_dev/docs/WORKFLOWS_AND_COMPONENTS.md +++ b/projects/ia_dev/docs/WORKFLOWS_AND_COMPONENTS.md @@ -79,7 +79,7 @@ Ce document formalise chaque workflow et chaque composant utilisés par l'IA pou | 2 | Exécuter `./deploy/scripts_v2/deploy.sh ` depuis la racine du projet, avec `test`, `pprod` ou `prod` | | 3 | **En cas d'échec** : orchestrer la correction automatique (boucle jusqu'à succès ou impossibilité) : (a) analyser la cause (logs, journalctl, fichiers sur cible, dist) ; (b) corriger la root cause sans contournement ; (c) committer/pousser si besoin ; (d) relancer le script ; (e) répéter | -**Options** : `--skipSetupHost`, `--checkLint`. **Env** : `DEPLOY_SKIP_CONCURRENCY_CHECK=1` pour désactiver le hook pre-deploy. +**Options CLI** : `--sync-origin`, `--no-sync-origin` (métier : `deploy.conf`). **Setup hôte** : `deploy/scripts_v2/run-setup-host.sh`, agent `/setup-host`. **Env** : `DEPLOY_SKIP_CONCURRENCY_CHECK=1` pour désactiver le hook pre-deploy. **Plan** : `.cursor/plans/workflow-deploy.plan.md` **Commande** : `/deploy ` **Référence** : docs/DEPLOYMENT.md, deploy/README.md. diff --git a/projects/ia_dev/docs/agents-scripts-split.md b/projects/ia_dev/docs/agents-scripts-split.md index 44502e7..886005a 100644 --- a/projects/ia_dev/docs/agents-scripts-split.md +++ b/projects/ia_dev/docs/agents-scripts-split.md @@ -53,7 +53,7 @@ - **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 `./deploy/scripts_v2/deploy.sh test --import-v1 --skipSetupHost` + - Exécuter `orchestrator.sh` ou `./deploy/scripts_v2/deploy.sh test --no-sync-origin` (métier via `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 :** @@ -120,9 +120,9 @@ | Fichier | Modification | |---------|--------------| | `deploy/branch-align.sh` | Ré-exécution depuis la racine git si nécessaire | -| `deploy/scripts_v2/deploy.sh` | Suivi branches origin ; **par défaut** sync (--sync-origin) et log (--log-to-dir logs) ; --no-sync-origin, --no-log pour désactiver | +| `deploy/scripts_v2/deploy.sh` | Par défaut `--sync-origin` ; tee toujours `logs/deploy_*.log` ; `--no-sync-origin` ; métier `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, deploy.sh test --import-v1 --skipSetupHost --no-sync-origin (log par défaut) | +| `deploy/change-to-all-branches.sh` | Vérif branche test, branch-align.sh test, orchestrateur ou deploy.sh test --no-sync-origin | | Agents .cursor/agents/*.md | Adapter les consignes pour utiliser les nouvelles options/scripts et alléger les étapes redondantes | --- @@ -133,8 +133,8 @@ ### deploy-by-script / deploy.sh -- **Dans le script :** option `--sync-origin` (git fetch + reset --hard origin/current) ; option `--log-to-dir ` (création du répertoire et tee vers un fichier daté). L'agent n'exécute plus ces commandes ni tee à la main. -- **Dans l'agent :** lancer le script avec `--sync-origin --log-to-dir logs`, contrôler la sortie et le code de retour. +- **Dans le script :** `--sync-origin` / `--no-sync-origin` ; tee fixe `logs/deploy_*.log`. +- **Dans l'agent :** lancer le script selon conf projet, contrôler la sortie et le code de retour. ### push-by-script / pousse.sh @@ -154,8 +154,7 @@ ### deploy.sh -- **Par défaut :** `SYNC_ORIGIN=true`, `LOG_TO_DIR="logs"`. Chaque invocation fait sync avec origin et tee vers `logs/deploy_YYYYMMDD_HHMMSS.log` sans que l'agent ait à passer des options. -- **Désactivation :** `--no-sync-origin` et `--no-log`. L'agent invoque simplement `deploy.sh --import-v1 --skipSetupHost`. +- **Par défaut :** `SYNC_ORIGIN=true`, logs fichier toujours sous `logs/`. **Désactivation sync :** `--no-sync-origin`. Métier : `deploy.conf`. Setup OS : `deploy/scripts_v2/run-setup-host.sh` (agent `/setup-host`). ### pousse.sh @@ -163,9 +162,9 @@ ### change-to-all-branches.sh -- Appelle `deploy.sh test --import-v1 --skipSetupHost --no-sync-origin` (après push, la branche est déjà à jour ; log dans logs/ reste le défaut). +- Appelle `deploy.sh test --no-sync-origin` ou orchestrateur (après push ; métier dans `deploy.conf`). ### Agents -- deploy-by-script : une seule commande sans options sync/log (comportement par défaut). +- deploy-by-script : commande alignée sur `deploy.conf` ; sync/log gérés par `deploy.sh`. - push-by-script : le script peut être appelé depuis n'importe quel sous-dossier. diff --git a/projects/lecoffreio/docs/WORKFLOWS_AND_COMPONENTS.md b/projects/lecoffreio/docs/WORKFLOWS_AND_COMPONENTS.md index 14999fb..6ff67b4 100644 --- a/projects/lecoffreio/docs/WORKFLOWS_AND_COMPONENTS.md +++ b/projects/lecoffreio/docs/WORKFLOWS_AND_COMPONENTS.md @@ -80,7 +80,7 @@ Ce document formalise chaque workflow et chaque composant utilisés par l'IA pou | 2 | Exécuter `./deploy/scripts_v2/deploy.sh ` depuis la racine du projet, avec `test`, `pprod` ou `prod` | | 3 | **En cas d'échec** : orchestrer la correction automatique (boucle jusqu'à succès ou impossibilité) : (a) analyser la cause (logs, journalctl, fichiers sur cible, dist) ; (b) corriger la root cause sans contournement ; (c) committer/pousser si besoin ; (d) relancer le script ; (e) répéter | -**Options** : `--skipSetupHost`, `--checkLint`. **Env** : `DEPLOY_SKIP_CONCURRENCY_CHECK=1` pour désactiver le hook pre-deploy. +**Options CLI** : `--sync-origin`, `--no-sync-origin` (métier : `deploy.conf` par env). **Setup hôte** : `deploy/scripts_v2/run-setup-host.sh`, agent `/setup-host`. **Env** : `DEPLOY_SKIP_CONCURRENCY_CHECK=1` pour désactiver le hook pre-deploy. **Plan** : `.cursor/plans/workflow-deploy.plan.md` **Commande** : `/deploy ` **Référence** : docs/DEPLOYMENT.md, deploy/README.md. diff --git a/projects/lecoffreio/docs/agents-scripts-split.md b/projects/lecoffreio/docs/agents-scripts-split.md index 4c57051..c1a1598 100644 --- a/projects/lecoffreio/docs/agents-scripts-split.md +++ b/projects/lecoffreio/docs/agents-scripts-split.md @@ -53,7 +53,7 @@ - **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 `./deploy/scripts_v2/deploy.sh test --import-v1 --skipSetupHost` + - 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 :** @@ -120,9 +120,9 @@ | Fichier | Modification | |---------|--------------| | `deploy/branch-align.sh` | Ré-exécution depuis la racine git si nécessaire | -| `deploy/scripts_v2/deploy.sh` | Suivi branches origin ; **par défaut** sync (--sync-origin) et log (--log-to-dir logs) ; --no-sync-origin, --no-log pour désactiver | +| `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, deploy.sh test --import-v1 --skipSetupHost --no-sync-origin (log par défaut) | +| `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 | --- @@ -133,8 +133,8 @@ ### deploy-by-script / deploy.sh -- **Dans le script :** option `--sync-origin` (git fetch + reset --hard origin/current) ; option `--log-to-dir ` (création du répertoire et tee vers un fichier daté). L'agent n'exécute plus ces commandes ni tee à la main. -- **Dans l'agent :** lancer le script avec `--sync-origin --log-to-dir logs`, contrôler la sortie et le code de retour. +- **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 @@ -154,8 +154,7 @@ ### deploy.sh -- **Par défaut :** `SYNC_ORIGIN=true`, `LOG_TO_DIR="logs"`. Chaque invocation fait sync avec origin et tee vers `logs/deploy_YYYYMMDD_HHMMSS.log` sans que l'agent ait à passer des options. -- **Désactivation :** `--no-sync-origin` et `--no-log`. L'agent invoque simplement `deploy.sh --import-v1 --skipSetupHost`. +- **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 @@ -163,9 +162,9 @@ ### change-to-all-branches.sh -- Appelle `deploy.sh test --import-v1 --skipSetupHost --no-sync-origin` (après push, la branche est déjà à jour ; log dans logs/ reste le défaut). +- Appelle `deploy.sh test --no-sync-origin` ou orchestrateur équivalent (après push ; métier dans `deploy.conf`). ### Agents -- deploy-by-script : une seule commande sans options sync/log (comportement par défaut). +- 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.