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:

deployado.yaml
# 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:
  • auto - Auto-detectar desde el repositorio
  • repo - Construir desde el repositorio
  • docker - Construir desde Dockerfile
  • static - Archivos estáticos (HTML/CSS/JS)
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

Valor estático
envVars:
  - key: NODE_ENV
    value: production
Secreto generado
envVars:
  - key: JWT_SECRET
    generateSecret: true
Prompt de usuario
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.

Definiendo y usando grupos de variables
# 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
Ejemplo de referencia a base de datos
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
Ejemplo de referencia a servicio
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)