MallaDocs

Déploiement

Environnements, bindings, secrets, migrations et le script de déploiement sur Cloudflare.

Guide développeur

Six Workers, chacun avec un environnement staging et un environnement production dans son wrangler.jsonc. Le niveau supérieur de chaque configuration correspond à l'environnement de développement local et e2e, et n'est jamais déployé. La liste de contrôle complète, avec les ressources, les liaisons et les secrets, se trouve dans docs/DEPLOY.md.

Environnements

WorkerPréproductionProduction
realtimemalla-realtime-stagingmalla-realtime
apimalla-api-stagingmalla-api
sitesmalla-sites-stagingmalla-sites
webmalla-web-stagingmalla-web
runnermalla-runner-stagingmalla-runner
mcpmalla-mcp-stagingmalla-mcp

Les branches Neon correspondent aux environnements : dev sert la préproduction, main sert la production. Les liaisons de service pointent toujours vers le même environnement.

Mise en production

  1. Secrets

    Définissez les secrets de chaque Worker avec wrangler secret put --env <env>. Les valeurs partagées (clé interne, secret des jetons temps réel) doivent être identiques entre les Workers. Les secrets ne sont jamais définis par des scripts.

  2. Migrations

    Appliquez packages/db/migrations dans l'ordre à la branche Neon de l'environnement avant de déployer une api qui en a besoin. Les migrations vont uniquement vers l'avant.

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

    Le script construit les packages de l'espace de travail et l'application Nuxt, puis déploie dans l'ordre des dépendances, pour que la cible de chaque liaison de service existe d'abord.

    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
    
    Ordre de déploiement
    realtime
    runner
    api
    mcp
    sites
    web
  4. Vérification rapide

    Chargez l'application, connectez-vous, ouvrez un site (le socket temps réel se connecte), téléversez une image, publiez en préproduction, soumettez un formulaire, et surveillez le cron de l'api avec wrangler tail.

Retour arrière

  • Un site : les publications sont immuables, donc revenir en arrière consiste à rebasculer le pointeur vers un publishId antérieur. Aucun redéploiement. Utilisez Recent publishes dans la fenêtre de publication de l'éditeur, ou POST /sites/:siteId/rollback ; voir Retour arrière.
  • Un Worker : revenez en arrière avec Wrangler, dans l'ordre inverse du déploiement quand un changement touche plusieurs Workers. Les secrets et les liaisons ne sont pas versionnés avec le code.
  • La base de données : créez une branche ou un instantané de main dans Neon avant une migration risquée ; restaurez-le pour annuler.
  • Les migrations de Durable Objects ne peuvent pas être annulées ; ne revenez jamais à une version antérieure à l'une d'elles.
bash
(cd apps/<app> && npx wrangler rollback --env <env>)
npx wrangler versions list --env <env>