Deploy no Google Cloud Run
Código revisado e aprovado (#38) precisa chegar no ar. No ClubPetro o produto roda no Google Cloud Run, e o deploy é o último portão entre o que a gente escreveu e o que o cliente usa. Este post conta como deployamos — e as pegadinhas que viraram cicatriz.
Por que Cloud Run
Cloud Run roda nosso container Next.js de forma gerenciada: escala conforme a demanda, sem a gente administrar servidor. O serviço (clubpetro-web) vive no projeto boot-308904, região southamerica-east1, com config canônica de memória, CPU com boost e instâncias mínimas pra evitar cold start.
O fluxo do PR ao ar
- PR aprovado e checks verdes (#38) → merge na
main. - Build do container (o script canônico usa Docker local; Cloud Build é o fallback quando o daemon não está rodando).
- Deploy no Cloud Run.
- Tráfego migra pra nova revisão.
A pegadinha que mais dói: secrets no deploy
A cicatriz nº1 do nosso histórico de deploy:
NUNCA use REST API PATCH pra deployar — isso apaga os secrets. Sempre
gcloud run deploy --set-secrets.
E tem a irmã dela: --set-env-vars substitui todas as envs simples; pra mudar só uma, use --update-env-vars. Errar isso derruba a aplicação por variável faltando — e o erro não é óbvio no log.
Outras pedras conhecidas
- Worktree sem node_modules (
.superset/worktrees) — rodepnpm installantes de buildar/deployar. - Imports proibidos no client — ex.:
@repo/dbnum'use client'quebra o build; tem que inlinar tipos. DATABASE_URLna porta 6543 (pooler) comprepare:false— porta 5432 dá SASL_SIGNATURE_MISMATCH.- Rota raiz
/tem caso de 500 no standalone (bug do Next 15) — não-bloqueante, usuário entra via/login.
Essas viram documentação porque vibe coding não adivinha pegadinha de operação — a IA escreve o deploy, mas o conhecimento de "o que já quebrou aqui" é nosso, e a gente passa pra ela via contexto.
Deploy e Lealdade a Dados
Deployou? Confirme com dado: a revisão está recebendo tráfego, os secrets estão lá, os health checks passam. "Deployei e deve estar ok" não é deploy — é torcida. E quando dá ruim, rollback é decisão rápida e sem ego (volta pra revisão anterior e investiga com calma).
⚠️ Armadilha #39: deployar via PATCH/REST ou
--set-env-varsachando que está "só atualizando uma coisinha". Você apaga secret/env e derruba produção. Use--set-secrets/--update-env-varse confira depois.
Próximo da série: #40 — A cultura por trás do vibe coding (e o futuro).