# Déployer un projet avec un agent de code IA

> Les commandes qu’un agent de code lance pour mettre un dossier en ligne sur *.gheima.ma : la connexion faite par la personne, et que faire quand une étape échoue.

Source: https://gheima.ma/fr/docs/deploy-with-an-agent

Pour un agent de code à qui l’on demande « déploie ça sur gheima.ma ». Lancez chaque commande depuis le dossier du projet avec --json : stdout porte un seul document JSON, et une erreur arrive sur stderr sous la forme {"error":{"code","message"}}. Le code de sortie dit ce qui s’est passé : 0 ok, 2 une option manquante, 3 non connecté, 5 refusé, 7 délai dépassé, 8 le déploiement n’est pas passé en ligne.

### 1. Obtenir la CLI

```bash
npx -y @gheima/cli@latest --version
```

Rien à installer : utilisez npx -y @gheima/cli@latest partout où cette page écrit gheima. Il faut Node 20 ou plus récent. Sans Node, curl -fsSL https://gheima.ma/install.sh | sh installe un binaire autonome dans ~/.local/bin.

### 2. Se connecter : la seule étape de la personne

```bash
gheima whoami --json
# sortie 0 : déjà connecté, passez à l’étape 3. Sortie 3 : connectez-vous ci-dessous.
gheima login --no-wait --json
gheima login --resume --timeout 110 --json
```

login --no-wait affiche userCode et verificationUrl puis se termine. login --resume attend l’approbation.

1. **Transmettre le lien** — Dites à la personne, mot pour mot : « Ouvrez <verificationUrl>, connectez-vous ou créez un compte, puis approuvez le code <userCode>. » Utilisez les valeurs affichées par login --no-wait.
2. **Attendre** — Lancez gheima login --resume --timeout 110 --json une fois. Une sortie 0 signifie connecté : passez à l’étape 3. Une sortie 7 avec le code login_pending signifie que la personne n’a pas encore approuvé : arrêtez-vous, dites que vous attendez son approbation, et relancez login --resume quand elle vous dit avoir approuvé, au lieu d’interroger jusqu’à l’expiration du code. Le code expire après dix minutes ; ensuite, recommencez avec login --no-wait.

> Note: Les nouveaux comptes se font sur invitation pendant la bêta. Si la page de connexion indique qu’une invitation est nécessaire, dites à la personne d’en demander une à hello@gheima.ma, et arrêtez-vous jusqu’à ce qu’elle ait un compte.

### 3. Déployer

```bash
gheima deploy --yes --json
```

Terminé quand la commande sort avec 0, "status": "LIVE" et une "url". Donnez l’url à la personne.

Le premier déploiement dans un dossier crée un service, nommé d’après package.json ou le dossier (--name en fixe un autre), et lie le dossier dans .gheima/. Un dossier de fichiers HTML simples (un index.html et rien qui construise ou lance un serveur) devient un site statique, que les offres comptent à part des services (choisissez le type vous-même avec --type). Les déploiements suivants réutilisent le service. D’où vient le code :

- `Le dossier a un remote git`: Gheima construit le dépôt distant, sur la branche courante. Poussez d’abord : les commits restés en local ne sont pas déployés. Un dépôt GitHub privé demande aussi l’application GitHub de Gheima (voir plus bas).
- `Pas de remote, ou pas un dépôt git`: Le dossier est envoyé puis construit. Dans un dépôt git, l’envoi suit .gitignore ; les fichiers .env et node_modules sont toujours laissés de côté. Ajoutez --upload pour envoyer les fichiers même s’il y a un remote.

### Quand une étape échoue

- `Sortie 8 : le déploiement n’est pas passé en ligne`: Lisez le journal de build avec gheima logs --build, puis le code d’erreur qu’il cite dans https://gheima.ma/fr/docs/errors.md. Corrigez l’application, poussez (sauf pour un envoi de fichiers), et relancez gheima deploy --json.
- `Sortie 3 : non connecté`: Revenez à l’étape 2.
- `Sortie 2 qui cite --yes`: Le premier déploiement crée un service et demande d’abord. Passez --yes une fois que la personne a demandé le déploiement.
- `Sortie 5 : le nom est pris`: Passez un autre --name.
- `Sortie 1 avec le code payload_too_large : l’envoi est trop gros`: Laissez de côté la sortie de build et les gros fichiers avec .gitignore : le build installe lui-même les dépendances et produit sa sortie.
- `Le journal de build dit que le dépôt est introuvable`: Le dépôt est privé et Gheima ne peut pas le lire. Demandez à la personne d’y installer l’application GitHub de Gheima depuis https://gheima.ma/api/github/install, puis redéployez. Ou envoyez les fichiers avec --upload.
- `Sortie 7 : délai d’attente dépassé`: Le déploiement continue. Suivez-le avec gheima services deployments <service> --json jusqu’à ce qu’il s’arrête : LIVE signifie en ligne ; FAILED, CANCELLED ou SKIPPED porte un errorMessage qui dit pourquoi.

### Avec MCP

Avec le serveur MCP de Gheima connecté (https://gheima.ma/mcp) : gheima_services_create avec un name et un repoUrl, puis gheima_services_deploy, puis gheima_services_deployments jusqu’à ce que ce déploiement s’arrête (LIVE, ou FAILED, CANCELLED ou SKIPPED avec un errorMessage), puis gheima_services_get pour l’url. Pour un dossier sans remote git, appelez gheima_services_create (un name, sans repoUrl), puis gheima_services_create_upload, et lancez dans le dossier la commande qu’il renvoie : elle envoie les fichiers et lance le déploiement ; suivez ensuite gheima_services_deployments de la même façon.

---

All docs: https://gheima.ma/fr/docs.md
