MallaDocs

Despliegue

Entornos, bindings, secretos, migraciones y el script de despliegue en Cloudflare.

Guía para desarrolladores

Seis Workers, cada uno con un entorno staging y otro production en su wrangler.jsonc. El nivel superior de cada configuración es el entorno local de desarrollo y e2e, y nunca se despliega. La lista completa, con recursos, bindings y secretos, está en docs/DEPLOY.md.

Entornos

WorkerStagingProducción
realtimemalla-realtime-stagingmalla-realtime
apimalla-api-stagingmalla-api
sitesmalla-sites-stagingmalla-sites
webmalla-web-stagingmalla-web
runnermalla-runner-stagingmalla-runner
mcpmalla-mcp-stagingmalla-mcp

Las ramas de Neon se corresponden con los entornos: dev respalda staging y main respalda producción. Los service bindings siempre apuntan al mismo entorno.

Lanzamiento

  1. Secretos

    Define los secretos de cada Worker con wrangler secret put --env <env>. Los valores compartidos (clave interna, secreto del token de realtime) deben coincidir entre Workers. Los secretos nunca se definen con scripts.

  2. Migraciones

    Aplica packages/db/migrations en orden a la rama de Neon del entorno antes de desplegar una api que las necesite. Las migraciones solo van hacia adelante.

    bash
    read -rs DATABASE_URL && export DATABASE_URL   # the branch's connection string
    pnpm --filter @malla/db db:migrate
    unset DATABASE_URL
    
  3. Despliegue

    El script construye los paquetes del workspace y la app Nuxt, y luego despliega en orden de dependencias, para que el destino de cada service binding exista antes.

    bash
    pnpm deploy:check          # build and validate every Worker, upload nothing
    pnpm deploy:staging        # sh scripts/deploy.sh staging
    pnpm deploy:production     # sh scripts/deploy.sh production
    
    Orden de despliegue
    realtime
    runner
    api
    mcp
    sites
    web
  4. Prueba de humo

    Carga la app, inicia sesión, abre un sitio (el socket de realtime se conecta), sube una imagen, publica en staging, envía un formulario y observa el cron de la api con wrangler tail.

Reversión

  • Un sitio: las publicaciones son inmutables, así que revertir es cambiar el puntero a un publishId anterior. Sin volver a desplegar. Usa Recent publishes en el popover de publicación del editor, o POST /sites/:siteId/rollback; consulta Revertir.
  • Un Worker: revierte con Wrangler, en orden inverso al de despliegue cuando un cambio abarca varios Workers. Los secretos y los bindings no se versionan con el código.
  • La base de datos: crea una rama o un snapshot de main en Neon antes de una migración arriesgada; restáuralo para deshacerla.
  • Las migraciones de Durable Objects no se pueden revertir; nunca vuelvas a una versión anterior a una de ellas.
bash
(cd apps/<app> && npx wrangler rollback --env <env>)
npx wrangler versions list --env <env>