- Copy enso/docs tree to services/docv/enso-docs (refresh via cp -a from enso repo) - Document mirror and refresh command in services/docv/README.md - Ignore services/docv/target for local Rust workspace - Track docv-service-integration, API docv.md, and related doc index updates
105 lines
5.4 KiB
Markdown
105 lines
5.4 KiB
Markdown
# ai_dev — intégration déploiement et secrets (Enso)
|
||
|
||
Référence unique pour brancher **enso** sur l’outillage partagé (**`dev_ai` / `ai_dev`**) : variables d’environnement, secrets, scripts bash et agents Cursor. La section **7** résume les artefacts sous **`deploy/`** et renvoie aux fichiers versionnés dans le dépôt.
|
||
|
||
## 1. Racine outillage (`ai_dev` / `dev_ai`)
|
||
|
||
Ordre de résolution (identique dans **`deploy-env.sh`**, **`ssh.sh`**, **`sync-secrets-to-ai_dev.sh`**, **`deploy/deploy.sh`**) :
|
||
|
||
1. `AI_DEV_ROOT`
|
||
2. `DEV_AI_ROOT` (clone **dev_ai** côte à côte du monorepo, ex. `~/code/dev_ai`)
|
||
3. `IA_DEV_ROOT` (compatibilité)
|
||
4. `~/code/dev_ai`
|
||
5. `~/code/ai_dev`
|
||
6. `~/code/ia_dev`
|
||
|
||
Fichiers attendus : **`${ROOT}/deploy/lib/ssh.sh`**, et côté secrets : **`${ROOT}/.secrets/enso/<env>/enso-deploy.env`**.
|
||
|
||
## 2. Secrets canoniques
|
||
|
||
Arborescence cible dans **ai_dev** (versionnée ou non selon politique du dépôt ai_dev) :
|
||
|
||
```text
|
||
$TOOLING_ROOT/.secrets/enso/<test|pprod|prod>/enso-deploy.env
|
||
```
|
||
|
||
(`$TOOLING_ROOT` = première racine résolue selon la liste §1.)
|
||
|
||
Les scripts **enso** doivent **préférer** ce fichier s’il existe, sinon :
|
||
|
||
```text
|
||
<monorepo-enso>/.secrets/<env>/enso-deploy.env
|
||
```
|
||
|
||
## 3. Script de synchronisation
|
||
|
||
Fichier à ajouter : `deploy/scripts_v2/sync-secrets-to-ai_dev.sh`
|
||
(merge depuis `.secrets/<env>/enso-deploy.env` du monorepo vers `.secrets/enso/<env>/enso-deploy.env` dans ai_dev.)
|
||
|
||
## 4. Bibliothèque `_lib/deploy-env.sh`
|
||
|
||
Fonction `enso_resolve_deploy_env_file repo_root env` — à sourcer depuis `deploy.sh`, `bootstrap-from-local.sh`, `install-rust-on-local.sh`, `install-systemd-on-local.sh`.
|
||
|
||
## 5. Wrapper `deploy/deploy.sh`
|
||
|
||
Exécute **`$TOOLING_ROOT/deploy/deploy.sh enso "$@"`** avec la résolution §1 (`$TOOLING_ROOT` = première racine trouvée).
|
||
|
||
## 6. Agents Cursor
|
||
|
||
Ajoutés sous **`.cursor/agents/`** :
|
||
|
||
- **`ai-dev-secrets-merge.md`** (`/ai-dev-secrets-merge`) — exécute le script de fusion des secrets vers ai_dev.
|
||
- **`ai-dev-deploy.md`** (`/ai-dev-deploy`) — vérifie ai_dev, rappelle **ai-dev-secrets-merge** si besoin, puis applique intégralement **`deploy-by-script.md`**.
|
||
- **`fix.md`** et **`evol.md`** — après un **`/push-by-script`** réussi (code de sortie **0**), enchaînent **`/ai-dev-deploy`** pour publier sur **test** la révision distante correspondant à la branche, sauf demande explicite de ne pas déployer.
|
||
|
||
L’agent **`deploy-by-script.md`** référence ai_dev et la résolution des secrets (section *ai_dev*).
|
||
|
||
**Après déploiement réussi** (**branche** **`test`**, **`pprod`** ou **`prod`**, log avec **`[enso-health] all checks passed`**) : **`deploy-by-script.md` §6** impose un appel **`call_mcp_tool`** : serveur **`cursor-ide-browser`**, outil **`browser_navigate`**, arguments **`url`** = **`ENSO_PUBLIC_ORIGIN`** (lue dans le **`enso-deploy.env`** résolu) ou repli `https://{env}.enso.4nkweb.com`, et **`newTab`**: **`true`**. Option : second **`browser_navigate`** pour `https://{env}.docv.4nkweb.com` (**docv**). Même consigne depuis le monorepo **enso** ou **dev_ai** (**`deploy/deploy.sh enso`**).
|
||
|
||
---
|
||
|
||
## 7. Fichiers à créer / remplacer dans le dépôt (contenu de référence)
|
||
|
||
### 7.1 `deploy/scripts_v2/_lib/deploy-env.sh`
|
||
|
||
Voir le fichier dans le dépôt (boucle **`AI_DEV_ROOT`**, **`DEV_AI_ROOT`**, **`IA_DEV_ROOT`**, **`~/code/dev_ai`**, **`~/code/ai_dev`**, **`~/code/ia_dev`**).
|
||
|
||
### 7.2 `deploy/scripts_v2/_lib/ssh.sh`
|
||
|
||
Même ordre de candidats que §7.1 ; source **`${cand}/deploy/lib/ssh.sh`** au premier trouvé.
|
||
|
||
### 7.3 `deploy/scripts_v2/sync-secrets-to-ai_dev.sh`
|
||
|
||
Copie **`.secrets/<env>/enso-deploy.env`** du monorepo vers **`<outil>/.secrets/enso/<env>/enso-deploy.env`**, avec la même découverte de racine que §7.1. Voir le fichier versionné dans le dépôt.
|
||
|
||
Puis : `chmod +x deploy/scripts_v2/sync-secrets-to-ai_dev.sh`.
|
||
|
||
### 7.4 Modifier `deploy/scripts_v2/deploy.sh`
|
||
|
||
Après `SCRIPT_DIR` / `REPO_ROOT` et le parsing `ENV`, **remplacer** l’affectation directe de `DEPLOY_ENV_FILE` par :
|
||
|
||
```bash
|
||
# shellcheck source=deploy-env.sh
|
||
source "$SCRIPT_DIR/_lib/deploy-env.sh"
|
||
enso_resolve_deploy_env_file "$REPO_ROOT" "$ENV"
|
||
echo "[enso-deploy] enso-deploy.env source=${ENSO_DEPLOY_ENV_SOURCE} file=${DEPLOY_ENV_FILE}"
|
||
```
|
||
|
||
Conserver **`source "$SCRIPT_DIR/_lib/ssh.sh"`** **après** la résolution du fichier env (comme aujourd’hui), ou **avant** si l’ordre actuel est conservé — l’important est d’avoir **`DEPLOY_ENV_FILE`** défini avant `source "$DEPLOY_ENV_FILE"`.
|
||
|
||
### 7.5 Idem pour `bootstrap-from-local.sh`, `install-rust-on-local.sh`, `install-systemd-on-local.sh`
|
||
|
||
Même bloc `source deploy-env.sh` + `enso_resolve_deploy_env_file "$REPO_ROOT" "$ENV"` à la place de `DEPLOY_ENV_FILE="${REPO_ROOT}/.secrets/..."`.
|
||
|
||
### 7.6 `deploy/deploy.sh` (racine du dossier `deploy/` dans enso)
|
||
|
||
**`exec`** le premier **`${C}/deploy/deploy.sh enso "$@"`** trouvé avec la même liste de candidats que §1. Voir le fichier versionné ; **`chmod +x`** appliqué dans le dépôt.
|
||
|
||
### 7.7 `deploy/enso-deploy.env.example`
|
||
|
||
En-tête : copie canonique sous l’outil partagé, repli monorepo, commande **`sync-secrets-to-ai_dev.sh`** (déjà présent dans le dépôt).
|
||
|
||
### 7.8 `deploy/README.md` et `docs/INSTALLATION_ENVIRONNEMENT.md` §7.15
|
||
|
||
**`dev_ai` / `ai_dev`** en premier, variables **`DEV_AI_ROOT`**, repli **`ia_dev`** et **`~/code/ia_dev`** ; secrets **`.secrets/enso/<env>/`** et script **`sync-secrets-to-ai_dev.sh`** (voir fichiers à jour dans le dépôt).
|