docs(agents+deploy): setup-host agent, deploy flags doc sync

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
This commit is contained in:
Nicolas Cantu 2026-03-23 14:02:58 +01:00
parent d80b240853
commit 4d4264fc41
15 changed files with 88 additions and 43 deletions

View File

@ -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/<id>/docs`** ; la doc ia_dev est dans **`projects/ia_dev/docs`**.
**Rôle de lagent :** 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 lagent :** 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/<id>/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.

View File

@ -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/<id>/conf.json` (deploy.deploy_script_path, deploy.secrets_path). Pour cibler un projet explicitement : passer lid en premier argument, ex. `./deploy/deploy-by-script-to.sh lecoffreio prod` (ou utiliser MAIL_TO / AI_AGENT_TOKEN). Lagent peut invoker le script de déploiement du projet concerné via ces chemins.

View File

@ -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] <pprod|prod>`.
- Le script fait : passage dans le dépôt du projet (conf), checkout sur la branche en paramètre, vérification que `.secrets/<env>` 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/<env>` 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.

View File

@ -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/<id>/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 dexé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/<id>/conf.json` avec `jq` si disponible ; exiger `deploy.repository_root` (répertoire existant).
3. **Contrat script** : sous `repository_root`, le point dentré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 <test|pprod|prod>`
- Lenvironnement doit être passé explicitement (pas de valeur par défaut métier).
5. **Secrets** : le script charge `.secrets/<env>/.env.<env>` via `SECRETS_BASE` / `repo-and-secrets.sh` comme `deploy.sh` ; sassurer 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 dexécution agent (horodatage, questions 311 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 lagent terminé.

View File

@ -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"

View File

@ -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..."

View File

@ -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 <project_id> <env> [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 <project_id> <env> [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

View File

@ -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`)

View File

@ -23,10 +23,33 @@ ia_dev_deploy_secrets_export_from_conf() {
fi
}
# ia_dev_deploy_export_runtime_context <repository_root> <env> — optional hints for project orchestrator scripts
# ia_dev_deploy_export_runtime_context <repository_root> <env> — 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 <repository_root> <env> <log_tag> — 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
}

View File

@ -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)."
}

View File

@ -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")"

View File

@ -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 <env>` 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 <env>`
**Référence** : docs/DEPLOYMENT.md, deploy/README.md.

View File

@ -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 <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 <env> --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.

View File

@ -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 <env>` 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 <env>`
**Référence** : docs/DEPLOYMENT.md, deploy/README.md.

View File

@ -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 lagent :**
@ -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 <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 <env> --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.