Especificación de Blueprint
Define toda tu infraestructura como código con Blueprints de Deployado. Un solo archivo YAML para desplegar servicios, bases de datos y configurar todo automáticamente.
Descripción General
Un Blueprint de Deployado es un archivo YAML (típicamente llamado deployado.yaml
) que define la infraestructura de tu aplicación. Colócalo en la raíz de tu repositorio para habilitar despliegues con un solo clic.
Ubicación del Archivo
El archivo blueprint debe llamarse deployado.yaml y estar ubicado en el directorio raíz de tu repositorio.
Ejemplo de Blueprint
Aquí hay un ejemplo completo mostrando una aplicación web típica con base de datos:
# Project configuration
name: my-saas-app
repository: https://github.com/myuser/my-app
branch: main
# Databases
databases:
- name: postgres-main
version: "16"
maxConnections: 100
# Reusable environment variable groups
envGroups:
- name: common
envVars:
- key: NODE_ENV
value: production
# Services/Applications
services:
- name: api
type: web
runtime: repo
port: 3000
healthCheck:
path: /health
preDeployCommand: npm run migrate
envGroups:
- common
envVars:
- key: DATABASE_URL
fromDatabase:
name: postgres-main
property: connectionString
- key: JWT_SECRET
generateSecret: true
- key: ADMIN_EMAIL
prompt: true
description: Admin email address
- name: frontend
type: web
runtime: repo
port: 80
links:
- service: api
envVar: REACT_APP_API_URL
Campos Raíz
Estos campos se definen en el nivel superior de tu archivo blueprint.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name |
string | Requerido | El nombre de tu proyecto. Usado para crear el proyecto en Deployado. |
repository |
string | Opcional | URL del repositorio en GitHub. Puede ser github.com/user/repo o URL HTTPS completa. |
branch |
string | Opcional | Rama de Git desde la cual desplegar. Por defecto: main |
project |
string | Opcional | Slug de proyecto existente para importar servicios en lugar de crear uno nuevo. |
services |
array | Requerido | Lista de servicios/aplicaciones a desplegar. Debe tener al menos uno. |
databases |
array | Opcional | Lista de bases de datos PostgreSQL a aprovisionar. |
envGroups |
array | Opcional | Grupos reutilizables de variables de entorno que pueden compartirse entre servicios. |
Servicios
Los servicios son las aplicaciones que componen tu proyecto. Cada servicio se despliega como un contenedor.
Campos de Servicio
| Campo | Tipo | Por defecto | Descripción |
|---|---|---|---|
name |
string | Requerido | Nombre único para el servicio. Usado en URLs y referencias. |
type |
string | web |
Tipo de servicio. Actualmente soporta web. |
runtime |
string | auto |
Cómo construir/ejecutar el servicio:
|
port |
integer | 8080 |
Puerto interno en el que tu aplicación escucha. |
path |
string | . |
Ruta dentro del repositorio donde se encuentra el código del servicio. |
server |
string | auto | ID del servidor destino. Si se omite, selecciona automáticamente un servidor disponible. |
availabilityTier |
string | basic |
Nivel de disponibilidad para el servicio. |
preDeployCommand |
string | - | Comando a ejecutar antes de cada despliegue (ej: migraciones de base de datos). |
build |
object | - | Configuración de construcción. Ver Campos de Build abajo. |
healthCheck |
object | - | Configuración de health check. Ver Campos de Health Check abajo. |
envVars |
array | - | Variables de entorno para este servicio. |
envGroups |
array | - | Nombres de grupos de variables de entorno a incluir. |
links |
array | - | Enlaces a otros servicios. Crea variables de entorno con URLs de servicios. |
Campos de Build
| Campo | Tipo | Descripción |
|---|---|---|
dockerfile |
string | Ruta al Dockerfile (por defecto: Dockerfile) |
context |
string | Ruta del contexto de build de Docker (por defecto: .) |
command |
string | Comando de build personalizado a ejecutar |
Campos de Health Check
| Campo | Tipo | Por defecto | Descripción |
|---|---|---|---|
path |
string | /health |
Ruta HTTP para verificar el estado de salud |
timeout |
integer | 10 |
Tiempo de espera en segundos para peticiones de health check |
Links
Los enlaces permiten que los servicios se descubran entre sí. Cuando enlazas el servicio A al servicio B, el servicio A obtiene una variable de entorno con la URL del servicio B.
| Campo | Tipo | Descripción |
|---|---|---|
service |
string | Nombre del servicio al cual enlazar (debe existir en el blueprint) |
envVar |
string | Nombre personalizado de variable de entorno. Si se omite, genera SERVICE_NAME_URL |
Bases de Datos
Define bases de datos PostgreSQL que serán aprovisionadas automáticamente. Los servicios pueden referenciar estas bases de datos en sus variables de entorno.
| Campo | Tipo | Por defecto | Descripción |
|---|---|---|---|
name |
string | Requerido | Nombre único para la base de datos. Usado para referenciarla desde los servicios. |
version |
string | 16 |
Versión de PostgreSQL (ej: "14", "15", "16") |
server |
string | auto | ID del servidor de base de datos. Si se omite, selecciona automáticamente un servidor disponible. |
maxConnections |
integer | 100 |
Número máximo de conexiones a la base de datos |
backupEnabled |
boolean | true |
Si los respaldos automáticos están habilitados |
Variables de Entorno
Las variables de entorno pueden definirse de múltiples formas: valores estáticos, secretos generados, referencias a bases de datos, referencias a otros servicios, o prompts al usuario.
| Campo | Tipo | Descripción |
|---|---|---|
key |
string | Requerido - El nombre de la variable de entorno |
value |
string | Valor estático para la variable |
generateSecret |
boolean | Si es true, genera un secreto aleatorio de 32 caracteres base64 URL-safe |
prompt |
boolean | Si es true, solicita al usuario que ingrese un valor durante el despliegue |
description |
string | Descripción legible (mostrada al solicitar al usuario) |
fromDatabase |
object | Referencia a una propiedad de conexión de base de datos. Ver Referencias de Base de Datos abajo. |
fromService |
object | Referencia a URL/host/puerto de otro servicio. Ver Referencias de Servicio abajo. |
Ejemplos
envVars:
- key: NODE_ENV
value: production
envVars:
- key: JWT_SECRET
generateSecret: true
envVars:
- key: SENDGRID_API_KEY
prompt: true
description: Your SendGrid API key for email delivery
Grupos de Variables
Los grupos de variables de entorno te permiten definir conjuntos reutilizables de variables que pueden compartirse entre múltiples servicios.
# Define the group at root level
envGroups:
- name: common-settings
envVars:
- key: LOG_LEVEL
value: info
- key: TZ
value: UTC
# Reference it in services
services:
- name: api
envGroups:
- common-settings # Inherits LOG_LEVEL and TZ
envVars:
- key: API_PORT
value: "3000"
- name: worker
envGroups:
- common-settings # Same env vars as api
Referencias Cruzadas
Los blueprints soportan referencias a bases de datos y servicios para configurar automáticamente cadenas de conexión y URLs.
Referencias de Base de Datos
Usa fromDatabase para obtener información de conexión de una base de datos definida en el blueprint.
| Campo | Descripción |
|---|---|
name |
Nombre de la base de datos (debe coincidir con una base de datos definida en databases) |
property |
Qué propiedad obtener (ver tabla abajo) |
driver |
Opcional: Formato del driver de cadena de conexión (auto por defecto) |
Propiedades de base de datos disponibles:
| Propiedad | Valor de Ejemplo |
|---|---|
connectionString |
postgres://user:pass@host:5432/dbname |
url |
postgres://user:pass@host:5432/dbname |
host |
db.internal.deployado.com |
port |
5432 |
user |
myapp_user |
database / name |
myapp_production |
envVars:
- key: DATABASE_URL
fromDatabase:
name: postgres-main
property: connectionString
Referencias de Servicio
Usa fromService para obtener información de URL/host de otro servicio.
| Campo | Descripción |
|---|---|
name |
Nombre del servicio (debe coincidir con un servicio definido en services) |
property |
url, host, o port |
envVars:
- key: API_ENDPOINT
fromService:
name: api
property: url # Results in: https://api.myproject.deployado.com
Reglas de Validación
Los blueprints son validados antes del despliegue. Estas son las reglas:
- Debe definirse al menos un servicio
- Los nombres de servicios deben ser únicos dentro del blueprint
- Los nombres de bases de datos deben ser únicos dentro del blueprint
- Todas las referencias fromDatabase.name deben coincidir con una base de datos existente
- Todas las referencias fromService.name deben coincidir con un servicio existente
- Todas las referencias links.service deben coincidir con un servicio existente
- Las claves de variables de entorno deben ser válidas (alfanuméricos y guiones bajos)