Deploy
Este guia cobre todos os procedimentos de deploy do Neemias: Worker (backend), Cloudflare Pages (frontend + docs), migrações D1 e CI/CD automatizado.
Visão geral
| Camada | Plataforma | Comando |
|---|---|---|
| Backend (Worker) | Cloudflare Workers | pnpm deploy:worker |
| Frontend (SPA) | Cloudflare Pages | pnpm build:app && wrangler pages deploy app/dist |
| Docs (VitePress) | Cloudflare Pages | pnpm deploy:docs |
| Database (D1) | Cloudflare D1 | pnpm db:migrate:local / db:migrate:remote |
Deploy rápido (script único)
O script scripts/deploy.sh automatiza o fluxo completo — testes, build e deploy:
./scripts/deploy.sh # dev (padrão)
./scripts/deploy.sh staging # staging
./scripts/deploy.sh prod # produçãoO script executa:
pnpm -r test— todos os testes do monorepoDEPLOY_ENV=$ENV pnpm build:app— build do frontendnpx wrangler deploy— deploy do Workernpx wrangler pages deploy app/dist— deploy do frontend
Deploy do Worker
pnpm deploy:workerEste comando invoca o wrangler deploy para publicar o Worker no Cloudflare. O Worker fica disponível no domínio configurado no wrangler.toml.
Deploy da documentação
pnpm deploy:docsO script scripts/deploy-docs.sh:
- Executa
pnpm docs:buildpara gerar o build VitePress com OpenAPI + TypeDoc - Publica
docs/.vitepress/distviawrangler pages deploy --project-name neemias-docs
Migrações D1
As migrações do banco de dados D1 são gerenciadas com Wrangler:
| Comando | Descrição |
|---|---|
pnpm db:migrate:local | Aplica migrações no D1 local (--local) |
pnpm db:migrate:remote | Aplica migrações no D1 remoto (produção) |
As migrações ficam no diretório migrations/ e são aplicadas sequencialmente. Certifique-se de testar as migrações localmente antes de executar no ambiente remoto.
Seed de dados
O seed popula o banco com dados de demonstração (500 alunos, 7 turmas, 20 núcleos, 4 slots de turma, 8 semanas de presença). Não executa em produção.
pnpm db:seedA guarda de seed (__DEPLOY_ENV__) impede a execução quando VITE_DEPLOY_ENV=prod. Veja Environments para detalhes sobre a matriz de ambientes.
CI/CD (GitHub Actions)
O deploy automatizado é disparado por tags de versão no padrão v* (ex.: v1.0.0, v0.26.0). O workflow:
- Executa
pnpm -r test— suite completa de testes - Executa
pnpm docs:build— build da documentação - Faz deploy do Worker (
pnpm deploy:worker) - Faz deploy do frontend no Cloudflare Pages
- Faz deploy da documentação no Cloudflare Pages
Para disparar um deploy, crie e envie uma tag:
git tag v1.0.0
git push origin v1.0.0Ambientes
O Neemias utiliza três ambientes controlados pela variável VITE_DEPLOY_ENV:
| Ambiente | VITE_DEPLOY_ENV | Seed | URL |
|---|---|---|---|
| Dev | dev | ✅ | neemias.app |
| Staging | staging | ✅ | staging.neemias.app |
| Produção | prod | ❌ | app.neemias.app |
Consulte Environments para configuração detalhada dos ambientes, secrets do Cloudflare Pages e fluxo de dados.
Fonte: README.md, scripts/deploy-docs.sh