Para la configuración general del entorno, consulta configuración de Environment. Para obtener detalles de sintaxis, consulta la YAML Reference.
Depuración de fallos en la compilación
Paso 1: Comprueba el estado de la compilación
| Estado | Qué significa | Qué hacer |
|---|---|---|
| Success | Todo salió bien | Nada — tu imagen de la máquina está lista |
| Partial | La compilación principal se completó correctamente, pero algunos repositorios fallaron | Comprueba qué repositorios fallaron; sus sesiones pueden tener problemas |
| Failed | La compilación falló | Revisa los registros del paso que falló |
| Cancelled | Una compilación más reciente sustituyó a esta | Es normal — inicia una compilación más reciente si es necesario |
| Skipped | No se detectaron cambios en la configuración | Nada — no fue necesaria ninguna compilación |
Paso 2: Lee los registros de compilación
- Configuración compartida — comandos de Enterprise y de toda la organización
- Clonación — clonación del repositorio
- Configuración del repositorio — comandos por repositorio
- Finalización — comprobación del estado y creación de la imagen
name, los registros mostrarán exactamente qué paso falló. Este es uno de los mayores beneficios de poner nombre a tus pasos:
Step 3: Identifica el patrón del error
Fallos de clonación
- El acceso al repositorio no está configurado — revisa Enterprise Settings > Integraciones
- Un repositorio privado requiere un token de autenticación
- Se cambió el nombre del repositorio o se eliminó
- Problema de conectividad de red (se necesita una VPN o un proxy)
Fallos en la instalación de dependencias
npm install, pip install o comandos similares.
Causas comunes:
- Un registro privado de paquetes requiere autenticación — agrega el token a Secrets
- Conflicto entre versiones de paquetes — fija versiones específicas
- Tiempo de espera de red agotado — comprueba si se necesita VPN
- URL del registro mal configurada
maintenance. Consulta Ejemplos de configuración para ver patrones de registros privados.
Fallos por tiempo de espera
- Un
promptinteractivo está esperando entrada — agrega flags-y, usaDEBIAN_FRONTEND=noninteractive - La instalación de un gran volumen de dependencias tarda demasiado
- El comando supera el tiempo de espera de 1 hora
initialize para que solo se ejecuten durante las compilaciones (no en cada sesión).
Errores de permisos
- Falta
sudopara instalar paquetes del sistema - Intento de escribir en directorios protegidos
- Archivo propiedad de un usuario distinto de una compilación anterior
sudo para operaciones a nivel del sistema (apt-get, escribir en /etc/, etc.). Para gestores de paquetes a nivel de usuario (npm, pip, cargo), normalmente no se necesita sudo.
Errores de “comando no encontrado”
initialize no está disponible en maintenance ni en pasos posteriores.
Causas comunes:
- La herramienta se instala en un directorio que no está en
PATH - Los cambios en el perfil del shell (
.bashrc) no se aplican en los pasos posteriores
PATH mediante $ENVRC:
Paso 4: Iterar
- Corrige tu configuración YAML
- Guarda — una nueva compilación se activa automáticamente
- Revisa los registros de la nueva compilación
Referencia rápida de errores comunes
| Error | Causa probable | Solución |
|---|---|---|
command not found | La herramienta no está instalada o no está en PATH | Agrégala a initialize o añádela a PATH mediante $ENVRC |
Permission denied | Falta sudo | Usa sudo apt-get install para paquetes del sistema |
npm ERR! 404 | Paquete privado, sin autenticación | Agrega el token de autenticación del registry en maintenance (examples) |
E: Unable to locate package | No se ejecutó apt-get update antes | Agrega sudo apt-get update -qq antes de apt-get install |
| Timeout | Instalación lenta o prompt interactivo | Muévelo a initialize; agrega -y y DEBIAN_FRONTEND=noninteractive |
| Archivos de configuración vacíos después del inicio de la sesión | Las credenciales se escribieron en initialize | Mueve los pasos de credenciales a maintenance |
| La compilación se completa correctamente, pero la sesión queda inutilizable | El comando maintenance falla al inicio de la sesión | Prueba manualmente los comandos de maintenance en una sesión |
Migrar desde la configuración interactiva
Cómo funciona la migración
- Interruptor ACTIVADO (predeterminado) — todas las sesiones usan la instantánea heredada. Sin interrupciones.
- Interruptor DESACTIVADO — todas las sesiones usan la instantánea declarativa.
Pasos de migración
Prepara tu configuración
Anota los comandos de tu configuración interactiva actual; luego los asignarás a secciones de YAML:
| Paso del asistente heredado | Equivalente declarativo |
|---|---|
| Git pull | Automático (integrado) |
| Configurar Secrets | Secrets (sin cambios) |
| Instalar dependencias | Sección initialize |
| Mantener dependencias | Sección maintenance |
| Configurar lint | Entrada de knowledge con el nombre lint |
| Configurar pruebas | Entrada de knowledge con el nombre test |
| Ejecutar la app localmente | Entrada de knowledge con el nombre startup |
| Notas adicionales | Entrada de knowledge con el nombre notes |
Escribe tu YAML
Ve a Settings > Devin’s Environment y selecciona tu repositorio. Asigna tus comandos heredados:O simplemente inicia una sesión de Devin y pídele que configure el repositorio; Devin puede generar la configuración automáticamente por ti.
Guarda y espera la compilación
Guarda tu configuración. Se iniciará una compilación automáticamente. Supervisa el progreso en Build History. Las compilaciones son gratuitas: no consumen ACUs.
Prueba antes de cambiar
Antes de migrar a todos, prueba la configuración declarativa en sesiones individuales con la anulación manual. Esto te permite a ti (o a quien esté iterando en la configuración) usar la instantánea declarativa mientras todos los demás siguen en la instantánea heredada.Sigue iterando en la configuración hasta que la configuración declarativa alcance plena paridad con tu Environment heredado.
Migración para Enterprise
- Configura primero el YAML a nivel Enterprise — infraestructura compartida, como VPN, certificados y configuración del proxy.
- Migra un org a la vez. Cada org tiene su propia opción heredada, por lo que puedes migrar de forma progresiva sin afectar a otros equipos.
- Considera un org de prueba. Para empresas grandes, crea una organización de prueba dedicada para validar la configuración declarativa antes de implementarla en los orgs de producción.
- Usa Devin para escalar. Devin puede configurar repositorios mediante sesiones en paralelo: inicia una sesión por repositorio y Devin generará automáticamente propuestas de configuración. Esto funciona bien para incorporar entre 10 y más de 100 repositorios.
¿Qué pasa con mi instantánea anterior?
Diferencias clave
| Característica | Heredado (interactivo) | Declarativo (YAML) |
|---|---|---|
| Reproducibilidad | Con estado: las instantáneas acumulan cambios con el tiempo | Totalmente reproducible a partir de YAML |
| Multi-repo | Un repositorio a la vez | Múltiples repositorios en una compilación con clonación simultánea |
| Mantenimiento | Pasos manuales para «mantener las dependencias» | Automático — maintenance se ejecuta al inicio de la sesión |
| Capas de Enterprise/org | No compatible | Jerarquía de 3 niveles (Enterprise → Org → Repositorio) |
| Sugerencias de Devin | Solo en el asistente | Durante la sesión — Devin puede sugerir actualizaciones de configuración |
| Costo | Las sesiones del asistente consumían ACU | Las sesiones de configuración consumen ~1–3 ACU; las compilaciones son gratuitas |
Preguntas frecuentes
General
initialize en lugar de maintenance?
Usa initialize para instalaciones únicas de herramientas (apt-get install, configuración del entorno de ejecución del lenguaje, herramientas CLI globales). Usa maintenance para la instalación de dependencias que deben mantenerse actualizadas (npm install, pip install, uv sync).
¿Cómo agrego variables de entorno?
Escríbelas en $ENVRC:
sudo apt-get install en tu sección initialize. Usa siempre DEBIAN_FRONTEND=noninteractive y la opción -y para evitar prompts interactivos.
¿Qué pasa si necesito versiones distintas de Node para diferentes repositorios?
Usa nvm en la configuración de tu repositorio:
Sobre la compilación
Específico de Enterprise
Limitaciones conocidas
- Sin vista previa ni entorno aislado de compilación — cada cambio de configuración activa una compilación completa. Prueba primero los comandos en una sesión.
- Configuración secuencial del repositorio — la configuración a nivel de repositorio se ejecuta un repositorio a la vez (en orden alfabético). Un gran número de repositorios implica compilaciones más largas.
- Sin lógica condicional en YAML — el formato no admite if/else. Usa condicionales de shell en tus comandos si es necesario (p. ej.,
[ -f package.json ] && npm install). - Sin búsqueda en los registros de compilación — los registros de compilación deben recorrerse manualmente. Usa pasos con nombre para que los fallos sean más fáciles de encontrar.
Próximos pasos
- Configuración de Environment — guía principal para definir tu configuración
- Ejemplos de configuración — ejemplos listos para copiar y pegar por stack y capa
