Scripts de repositorio
Los scripts de repositorio son scripts de shell que configuras por repositorio
(Ajustes → Repositorios → el ícono de terminal en la fila de un repo) y que el
servidor de Control Center ejecuta contra el worktree de un espacio de ese
repo: el checkout aislado en
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ donde trabajan los
agentes.
Hay dos tipos:
| Script | Cuándo se ejecuta | Para qué usarlo |
|---|---|---|
| Configuración | Justo después de aprovisionar un worktree para un espacio | Instalar dependencias, generar archivos, copiar .env |
| Archivado | Justo antes de que un worktree se destruya o se recolecte como basura | Limpiar recursos fuera del worktree (redes de docker, túneles, estado externo) |
Dónde se ejecutan los scripts
Sección titulada «Dónde se ejecutan los scripts»Ambos scripts se ejecutan mediante bash -lc (un shell de inicio de sesión, de
modo que las herramientas instaladas con Homebrew/nvm están en el PATH) con
el worktree como directorio de trabajo y con estas variables de entorno
definidas:
| Variable | Valor |
|---|---|
CC_WORKSPACE_PATH |
El worktree (el cwd del script) |
CC_ROOT_PATH |
El repo de origen registrado: tu propio checkout |
CC_SPACE_ID |
El espacio al que pertenece el worktree |
CC_SPACE_NAME |
El nombre para mostrar del espacio |
CC_REPO_NAME |
El nombre para mostrar del repo |
Por ejemplo, un script de configuración que instala dependencias y trae el
.env ignorado por git del repo:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildComportamiento ante fallas
Sección titulada «Comportamiento ante fallas»- Un script de configuración que sale con un código distinto de cero (o que supera su tiempo de espera de 5 minutos) hace fallar el aprovisionamiento del espacio: el espacio muestra el estado de falla con un reintento y se registra la cola de salida de la ejecución. Un reintento aprovisiona desde un worktree limpio y vuelve a ejecutar el script; escribe los scripts de configuración de modo que una nueva ejecución tras una instalación parcial funcione (los gestores de paquetes ya se comportan así).
- Un script de archivado se ejecuta con el mejor esfuerzo posible: si falla (o supera su tiempo de espera de 2 minutos), se registra, pero nunca bloquea la eliminación. El archivado se ejecuta en rutas de GC donde no hay nadie que responda a un aviso (espacio eliminado, PR fusionada, limpieza programada).
La configuración solo se ejecuta en un worktree nuevo: volver a despachar agentes a un espacio ya activo reutiliza el checkout existente y no vuelve a pagar la instalación.
Historial de ejecuciones
Sección titulada «Historial de ejecuciones»Cada ejecución se registra con su estado, su duración, su código de salida y
una cola de salida acotada, todo visible en el mismo cuadro de diálogo de
ajustes, en «Ejecuciones recientes» (la suscripción repos.watchScriptRuns la
transmite en vivo).
Permisos
Sección titulada «Permisos»Los scripts son shell que ejecuta el servidor, así que escribirlos está
restringido a los administradores del espacio de trabajo y está protegido por
la clase de acción processSpawn, la misma red de barandillas que controla
todas las demás operaciones que generan procesos.