docs

Seed dos novos ambientes

Um comando do seu repositório que prepara os dados de cada novo ambiente, com acesso somente leitura aos bancos do ambiente base.

O seed é um comando do seu repositório que prepara os dados de cada novo ambiente: criar um usuário de teste, copiar parte dos dados de production, rodar as migrações.

Configurar

Configure em Configurações do projeto → Seed dos novos ambientes, escolhendo o serviço e o comando, ou no campo seed do veloz.json:

"seed": {
  "service": "api",
  "command": "pnpm db:seed"
}

O campo seed do veloz.json substitui o que foi configurado no painel no próximo push que faz deploy em production.

Quando o seed roda

Quando um ambiente é criado a partir de outro (um ambiente de PR ou um ambiente duplicado), a Veloz roda o comando uma vez:

  1. Espera os bancos do novo ambiente ficarem prontos (e a cópia dos dados, se ela estiver ligada).
  2. Roda o comando com a versão do serviço que está no ar no ambiente base, então o script precisa estar no código já em deploy. O comando roda com sh -c.
  3. Os serviços de app do novo ambiente esperam o seed terminar antes do deploy.

O seed tem até 20 minutos. Ele roda uma vez por ambiente e não roda de novo em pushes seguintes.

Acesso aos bancos

O comando recebe as variáveis do serviço no novo ambiente, então DATABASE_URL e as referências como ${{postgres.url}} apontam para os bancos novos, com acesso total. Para cada variável que aponta para um banco PostgreSQL do tier compartilhado, o seed também recebe a mesma variável com o prefixo SOURCE_, apontando para o banco de mesmo nome no ambiente base com acesso somente leitura. Por exemplo:

# DATABASE_URL: banco do novo ambiente (leitura e escrita)
# SOURCE_DATABASE_URL: banco do ambiente base (só leitura)
pg_dump "$SOURCE_DATABASE_URL" --table=plans --data-only | psql "$DATABASE_URL"

O acesso de leitura vale só enquanto o seed roda.

Status e erros

O status do seed aparece no comentário do PR e, com a saída do comando, em Configurações do projeto → Seed dos novos ambientes. Se o seed falha, os serviços fazem deploy mesmo assim, com os bancos como o seed os deixou.

Próximos passos