Resumen
Los blueprints basados en Git te permiten almacenar la configuración de tu entorno directamente en tu repositorio como un archivo.devin/blueprint.yaml. Sincronizas el archivo con Devin mediante la API o la UI, y luego activas una compilación de instantánea para aplicar los cambios.
Esto te da el mismo workflow que usas para el código de la aplicación: editar en tu IDE, abrir un pull request, obtener una revisión, hacer merge y luego sincronizar + compilar mediante un paso de CI o desde la UI.
Cómo Devin elige el modo cuando agregas un repositorio
El modo basado en Git es el predeterminado siempre que haya un archivo de blueprint en el repo. Cuando agregas un repositorio a tu entorno, Devin comprueba si en la rama predeterminada existe.devin/blueprint.yaml:
- Si el archivo existe, Devin obtiene el blueprint desde Git (modo basado en Git) y registra el SHA del commit desde el que sincronizó.
- Si el archivo no existe (o la detección falla), Devin crea un blueprint vacío que gestionas en la UI de Settings (modo de base de datos).
Los blueprints basados en Git usan el mismo formato YAML que el editor de la UI. Consulta la blueprint reference para ver la especificación completa de los campos.
Primeros pasos
- Crear el archivo blueprint
Agrega un archivo .devin/blueprint.yaml en la raíz de tu repositorio:
- Haz push a la rama predeterminada
Confirma y haz push de .devin/blueprint.yaml a la rama predeterminada de tu repositorio (normalmente main o master).
Si el repositorio ya está conectado al Environment de Devin, debes iniciar una sincronización (mediante la API o el botón Sync de la UI) para que Devin detecte el archivo, a menos que el blueprint ya esté en modo basado en Git y el repositorio tenga habilitado Run on every commit to default branch. Si el blueprint está en modo de base de datos, cámbialo a Git para importar el archivo. Si estás agregando el repo por primera vez, el descubrimiento inicial lee el blueprint desde Git.
- Verificar en la UI
Ve a Settings > Environment > Blueprints y haz clic en el repositorio. El editor muestra el contenido del blueprint de Git, y el indicador de origen muestra el nombre del proveedor (p. ej., “GitHub”) junto con el SHA del commit sincronizado.
Cómo funciona la sincronización
La sincronización es el proceso de obtener.devin/blueprint.yaml del HEAD de la rama predeterminada del repo y actualizar las versiones de blueprint almacenadas en Devin. De forma predeterminada, la sincronización no se realiza automáticamente al hacer push. La sincronización se ejecuta en estos casos:
- Sincronización mediante la API — Llama al endpoint de sincronización (beta) (consulta Sincronización mediante la API más abajo). Este es el enfoque recomendado para los pipelines de CI/CD.
- Sincronización en la UI — Haz clic en el botón Sync en el editor de blueprint. Esto también activa una compilación de instantánea si el contenido cambió.
- Al agregar un repo al Environment — Si
.devin/blueprint.yamlexiste en la rama predeterminada, el blueprint se obtiene automáticamente desde Git durante la detección inicial. - En cada commit a la rama predeterminada (opcional) — En los repositorios con Run on every commit to default branch habilitado, cada push a la rama predeterminada sincroniza el blueprint y activa una compilación. Consulta Sincronizar y compilar en cada commit de la rama predeterminada.
Sincronización y compilación en cada commit a la rama predeterminada
En repositorios de GitHub.com, puedes optar por la sincronización y las compilaciones automáticas en lugar de llamar a la API desde CI o hacer clic en Sync:- Ve a Settings > Environment > Blueprints y haz clic en el repositorio.
- Abre la pestaña Advanced.
- Activa Run on every commit to default branch.
La pestaña Advanced solo aparece en repositorios de GitHub.com y únicamente cuando esta opción está disponible para tu organización. Para otros Git providers, o cuando la opción está desactivada, usa la sincronización por API o el botón Sync.
Sync vs. compilación
Sync y la compilación son operaciones independientes:- Sync obtiene el archivo
.devin/blueprint.yamlmás reciente de Git y almacena una nueva versión del blueprint. - Build crea una nueva imagen de instantánea a partir de las versiones actuales del blueprint.
Sincronización mediante la API
Si Run on every commit to default branch no está disponible o está desactivado en tu repositorio, la forma recomendada de mantener los blueprints sincronizados es invocar la API después de fusionar los cambios en.devin/blueprint.yaml. Normalmente, esto se hace desde un pipeline de CI/CD (p. ej., un paso posterior a la fusión en GitHub Actions).
Flujo de principio a fin
Paso 1: Sincroniza el blueprint
Obtén la versión más reciente de.devin/blueprint.yaml de la rama predeterminada:
repo_name acepta owner/repo para GitHub o la URL completa del proveedor para otros hosts (p. ej., https://gitlab.com/org/repo).
Paso 2: Iniciar una compilación
Después de la sincronización, inicia una compilación de instantánea para aplicar el nuevo blueprint:Paso 3: Consultar el estado de la compilación (opcional)
Si quieres esperar a que la compilación finalice en CI:status pasa por los siguientes valores: pending → running → succeeded o failed (o cancelled). La API informa una compilación parcial como succeeded porque la instantánea es utilizable.
Sincronización a nivel Enterprise
Para empresas con múltiples organizaciones que comparten el mismo repositorio, hay un endpoint a nivel Enterprise que sincroniza todas las organizaciones con conexión al repositorio:Ejemplo: flujo de trabajo de GitHub Actions
Automatiza la sincronización + la compilación con cadapush a la rama predeterminada que afecte al archivo blueprint:
Necesitas un usuario de servicio o un token de acceso personal con permisos de escritura en Environment. Guarda el token como
DEVIN_API_TOKEN y tu org ID como DEVIN_ORG_ID en los secretos del repositorio.Edición de blueprints basados en Git
Cuando un blueprint está basado en Git, el Editor de la interfaz de usuario queda en modo de solo lectura para los guardados directos. En su lugar, tienes dos opciones para hacer cambios:Crear una PR desde el editor
- Abre el editor de blueprint en Settings > Environment > Blueprints
- Edita el YAML en el editor
- Haz clic en Create PR
- Devin abre una pull request en tu repositorio que actualiza
.devin/blueprint.yaml - Revisa, aprueba y haz merge de la PR
- La siguiente sincronización detecta el cambio y activa una compilación
Edita directamente en tu repositorio
- Edita
.devin/blueprint.yamlen tu IDE o en tu proveedor de Git - Confirma y haz push a la rama predeterminada (o abre una solicitud de extracción (PR) y fusiónala)
- Inicia una sincronización mediante la API o haz clic en Sync en la UI (no es necesario si Run on every commit to default branch está habilitado)
Sugerencias de Devin
Cuando Devin propone un cambio en el blueprint durante una sesión (p. ej., después de analizar tu proyecto), la sugerencia se aplica abriendo una solicitud de extracción (PR) para.devin/blueprint.yaml en lugar de guardarse directamente en la base de datos. Luego revisas y fusionas la PR como cualquier otro cambio de código.
Monorepos y espacios de trabajo
Para monorepos con múltiples paquetes, puedes usar la directivaincludes para definir blueprints independientes para cada espacio de trabajo. Cada espacio de trabajo tiene su propio archivo .devin/blueprint.yaml en su subdirectorio.
Blueprint raíz con inclusiones
El archivo.devin/blueprint.yaml raíz define qué espacios de trabajo tienen sus propios blueprints:
Blueprints de espacios de trabajo
Cada espacio de trabajo incluido tiene su propio.devin/blueprint.yaml:
Reglas de inclusión
- Cada entrada de
includeses una ruta de subdirectorio (p. ej.,packages/frontend). Devin busca.devin/blueprint.yamldentro de ese directorio. - También se puede usar la ruta completa:
packages/frontend/.devin/blueprint.yaml. - Solo el blueprint raíz puede contener
includes. No se permiten inclusiones anidadas (un blueprint incluido que, a su vez, declareincludes). - Cada ruta de espacio de trabajo solo puede aparecer una vez en
includes. - Si falta un archivo incluido en el repositorio, ese espacio de trabajo se considera eliminado y se elimina su blueprint.
Cambiar entre los modos Git y de base de datos
Cambiar a Git
Si tienes un blueprint existente gestionado en la base de datos y quieres cambiar a Git:- Crea
.devin/blueprint.yamlen tu repositorio con el contenido deseado - Haz push a la rama predeterminada
- En el editor de blueprint, haz clic en el menú desplegable de origen y selecciona tu proveedor de Git (por ejemplo, “GitHub”)
- Devin sincroniza el archivo desde Git y cambia al modo basado en Git
Cambiar al modo de base de datos
Si quieres dejar de usar el modo basado en Git y gestionar el blueprint en la interfaz de usuario:- En el editor de blueprint, haz clic en el menú desplegable de origen y selecciona Database
- Se conserva el contenido actual, pero los futuros pushes a
.devin/blueprint.yamlya no actualizarán el blueprint - Ahora puedes editar y guardar directamente en la interfaz de usuario
Espacios de trabajo desvinculados
Puedes desvincular de Git los blueprints de espacios de trabajo individuales mientras mantienes la raíz en modo basado en Git. Un espacio de trabajo desvinculado se puede editar en la UI y se excluye durante la sincronización. Esto resulta útil cuando un espacio de trabajo necesita una anulación temporal sin afectar al resto del repositorio. Para volver a vincular un espacio de trabajo desvinculado, cambia su origen de nuevo a Git desde el menú desplegable de origen.Historial de versiones
Cada sincronización crea una nueva versión en el historial del blueprint, etiquetada con:- Origen:
git_syncpara las versiones creadas por sincronización,manualpara las versiones creadas en la interfaz de usuario - SHA del commit: el commit de la rama predeterminada sobre el que se ejecutó la sincronización (enlaza al commit en tu proveedor de Git)
YAML multidocumento
Al igual que el editor de la interfaz de usuario,.devin/blueprint.yaml admite YAML multidocumento con el separador ---. Esto te permite definir configuraciones específicas de la plataforma en un solo archivo:
Solución de problemas
La plantilla no se sincroniza
- ¿Está el archivo en la ruta correcta? Debe estar en
.devin/blueprint.yamlen la raíz del repositorio (o en<espacio de trabajo>/.devin/blueprint.yamlpara los espacios de trabajo incluidos). - ¿Iniciaste una sincronización? De forma predeterminada, la sincronización no ocurre automáticamente al hacer push. Llama al endpoint de la API de sincronización o haz clic en el botón Sync en la UI. Si esperas que los push se sincronicen automáticamente, verifica que Run on every commit to default branch esté habilitado en la pestaña Advanced del repositorio y que hayas hecho push a la rama predeterminada.
- ¿Está el repositorio en el Environment de Devin? La repo debe agregarse en Settings > Environment > Blueprints para que se ejecute la sincronización.
- ¿Está habilitado el modo basado en Git? El blueprint debe estar en modo basado en Git (no en modo de base de datos) para que la sincronización lo actualice.
Errores de YAML inválido
Si.devin/blueprint.yaml contiene YAML inválido o no se ajusta al esquema del blueprint, la sincronización falla. Corrige el archivo en la rama predeterminada y vuelve a sincronizar. El editor de blueprint en la UI valida el esquema y muestra los errores antes de que crees una PR, lo que ayuda a detectar problemas antes de que lleguen a la rama predeterminada.
La plantilla muestra “Database” después de hacer push
Si hiciste push de un archivo.devin/blueprint.yaml pero el editor sigue mostrando “Database” como origen, puede que el blueprint todavía no se haya cambiado al modo basado en Git. Usa el menú desplegable de origen para cambiar a tu proveedor de Git, lo que activa la sincronización inicial.
