Repository navigation
Fluxo de trabalho
Referência canônica, compartilhada com o backend: Boas Práticas — Segue o fluxo.
| Branch | Ambiente | URL |
|---|---|---|
main |
Produção | basedosdados.org |
staging |
Pré-produção / QA | staging.basedosdados.org |
development |
Integração / testes | development.basedosdados.org |
Nunca faça commit ou push direto nessas branches. Toda mudança entra por pull request.
Um push em qualquer uma delas dispara o build da imagem Docker e o deploy no ambiente correspondente.
main ──┬──────────────────────────────────────────► (PR 3) main
│
└─► feat/minha-feature ──┬─► (PR 1) development
├─► (PR 2) staging
└─► (PR 3) main
-
Crie a branch a partir de
main, nunca destagingoudevelopment.Nomeie a branch pela intenção:git checkout main && git pull git checkout -b feat/minha-featurefeat/…,fix/…,chore/…,docs/…,refactor/…. Uma mudança lógica por branch. -
Abra três PRs com a mesma branch: um para
development, um parastaginge um paramain. Não crie uma branch para cada destino nem faça cherry-pick. - Faça merge com merge commit ou fast-forward. Nunca use squash. O squash cria um commit novo em cada branch e quebra o histórico compartilhado de que os resets dependem.
-
Ordem usual:
development→ validar →staging→ QA →main.
Exceção — documentação: mudanças só de docs (README, CONTRIBUTING, comentários) normalmente vão apenas para
main. Abra os PRs paradevelopmentestagingsó se a equipe achar relevante.
Como a mesma branch é mesclada nos três destinos, os commits da feature têm o mesmo SHA em todos os ambientes. Só os merge commits mudam.
Os ambientes se distanciam conforme os merge commits se acumulam. Por isso, a equipe reseta staging e development para main mais ou menos a cada duas semanas.
Consequências:
-
Uma mudança só sobrevive se chegar em
main. O que existir apenas emstagingoudevelopmenté descartado no próximo reset. - Logo depois de um reset, um PR de branch criada a partir de
mainentra limpo emdevelopmentestaging. Quanto mais tempo passa, mais commits demaino PR arrasta. Se o destino estiver muito diferente, espere o reset em vez de forçar um merge com muito ruído.
- Mesclar uma branch de ambiente em outra (ex.:
staging→main) para promover uma feature. - Criar a branch da feature a partir de
developmentoustaging. - Usar squash merge.
- Fazer push direto em
main,stagingoudevelopment.
-
Mergify: atualiza automaticamente PRs desatualizados em relação ao destino (exceto drafts e PRs com conflito). Quando há conflito, comenta no PR e adiciona o label
conflict. -
Cypress: PRs para
mainque alteramnext/rodam os testes end-to-end (.github/workflows/cypress-tests.yml). Veja Testes com o Cypress.
-
git branch --show-currentmostra a sua branch de feature - A branch foi criada a partir de um
mainatualizado - O site roda localmente sem erros (
npm run dev) - Textos novos têm tradução em
pt,enees(public/locales/) - Três PRs abertos:
development,stagingemain(para mudanças só de docs, normalmente sómain)