Aller au contenu

Scripts de dépôt

Les scripts de dépôt sont des scripts de shell que vous configurez par dépôt (Paramètres → Dépôts → l’icône de terminal sur la ligne d’un dépôt) et que le serveur de Control Center exécute contre l’arbre de travail d’un espace pour ce dépôt — la copie isolée sous <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ où les agents travaillent.

Il en existe deux types :

Script Quand il s’exécute À quoi il sert
Configuration Juste après le provisionnement d’un arbre de travail pour un espace Installer les dépendances, générer des fichiers, copier .env
Archivage Juste avant qu’un arbre de travail soit détruit ou récupéré par le GC Nettoyer des ressources à l’extérieur de l’arbre de travail (réseaux Docker, tunnels, état externe)

Les deux scripts s’exécutent par bash -lc (un shell de connexion, de sorte que les outils installés par Homebrew ou nvm sont dans le PATH) avec l’arbre de travail comme répertoire de travail, et avec ces variables d’environnement définies :

Variable Valeur
CC_WORKSPACE_PATH L’arbre de travail (le répertoire de travail du script)
CC_ROOT_PATH Le dépôt source enregistré — votre propre copie
CC_SPACE_ID L’espace auquel appartient l’arbre de travail
CC_SPACE_NAME Le nom d’affichage de l’espace
CC_REPO_NAME Le nom d’affichage du dépôt

Par exemple, un script de configuration qui installe les dépendances et récupère le .env ignoré par git du dépôt :

Fenêtre de terminal
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Un script de configuration qui se termine avec un code non nul (ou qui dépasse son délai d’expiration de 5 minutes) fait échouer le provisionnement de l’espace : l’espace affiche l’état d’échec avec une nouvelle tentative, et la fin de la sortie de l’exécution est consignée. Une nouvelle tentative provisionne à partir d’un arbre de travail propre et exécute de nouveau le script — écrivez donc vos scripts de configuration pour qu’une réexécution après une installation partielle fonctionne (les gestionnaires de paquets se comportent déjà ainsi).
  • Un script d’archivage s’exécute au mieux : un échec (ou son délai d’expiration de 2 minutes) est consigné, mais ne bloque jamais la suppression. L’archivage s’exécute sur les chemins de GC où personne ne peut répondre à une invite (espace supprimé, PR fusionnée, nettoyage planifié).

La configuration ne s’exécute que sur un arbre de travail neuf : relancer des agents dans un espace chaud réutilise la copie existante et ne repaye pas l’installation.

Chaque exécution est consignée avec son état, sa durée, son code de sortie et une fin de sortie bornée, visibles dans la même boîte de dialogue de paramètres sous « Exécutions récentes » (l’abonnement repos.watchScriptRuns les diffuse en direct).

Les scripts sont des commandes shell que le serveur exécute, de sorte que leur écriture est réservée aux administrateurs d’espace de travail et protégée par la classe d’action processSpawn — le même filet de garde-fous qui encadre toute autre opération lançant un processus.