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
| Worker | Staging | Producción |
|---|---|---|
| realtime | malla-realtime-staging | malla-realtime |
| api | malla-api-staging | malla-api |
| sites | malla-sites-staging | malla-sites |
| web | malla-web-staging | malla-web |
| runner | malla-runner-staging | malla-runner |
| mcp | malla-mcp-staging | malla-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
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.Migraciones
Aplica
packages/db/migrationsen orden a la rama de Neon del entorno antes de desplegar una api que las necesite. Las migraciones solo van hacia adelante.bashread -rs DATABASE_URL && export DATABASE_URL # the branch's connection string pnpm --filter @malla/db db:migrate unset DATABASE_URLDespliegue
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.
bashpnpm deploy:check # build and validate every Worker, upload nothing pnpm deploy:staging # sh scripts/deploy.sh staging pnpm deploy:production # sh scripts/deploy.sh productionOrden de despliegue realtimerunnerapimcpsiteswebPrueba 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
publishIdanterior. Sin volver a desplegar. Usa Recent publishes en el popover de publicación del editor, oPOST /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
mainen 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.
(cd apps/<app> && npx wrangler rollback --env <env>)
npx wrangler versions list --env <env>