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.

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#

Shell
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#

Shell
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. 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. 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.

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#

Shell
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.