📌 Fluxo de Versionamento e Branches (Plano Condicional)
Este documento descreve o fluxo de versionamento adotado pelo time de desenvolvimento, baseado em branches organizadas e integradas com Semantic Release para automação de versões, changelogs e publicações.
🔹 Estrutura de Branches
main- Contém a versão estável em produção.
- Exemplo de versão:
v2.3.0. - Hotfixes devem ser aplicados diretamente aqui.
- Responsável por gerar rollback e rollout quando necessário.
-
Sempre que houver promoção para a
main(via Pull Request), o Semantic Release dispara um novo workflow, responsável pela publicação oficial.- Isso permite um rollout e rollback de forma facilitada.
-
release-candidate - Representa a branch de preparação para liberar uma nova versão estável.
- Criada a partir da
next. - Exemplo de versão:
v2.3.0-rc.2. -
Recebe apenas bugfixes até ser promovida para
main. -
next - Branch de integração das funcionalidades em desenvolvimento.
- Cada merge de feature gera automaticamente uma versão beta.
-
Exemplo de versão:
v2.3.0-beta.1. -
feature/* - Utilizada pelos desenvolvedores para implementar novas funcionalidades.
- Após o merge em
next, gera uma versão beta.
🔹 Ciclo de Versionamento
- Desenvolvimento de Feature
- O desenvolvedor cria uma branch
feature/nome-da-feature. -
Ao concluir e realizar merge na
next, o Semantic Release gera uma versão beta (X.Y.Z-beta.N). -
Versões Beta
- Usadas para validar novas funcionalidades.
- Não elegíveis para serem promovidas diretamente à produção.
-
Caso necessário, devem passar novamente por Pull Requests com adequações.
-
Release Candidate (RC)
- Criada a partir da
nextquando as features já foram estabilizadas. - Gera versões
rc(X.Y.Z-rc.N). -
Apenas bugfixes entram nesta branch.
-
Promoção para Main
- Quando estável, a
release-candidateé promovida paramain. - Isso gera uma nova versão estável (
X.Y.Z). - Importante: neste ponto, o Semantic Release dispara um workflow de publicação, permitindo rollout e rollback.
🔹 Hotfixes
- Devem ser aplicados diretamente na branch
main. - O fluxo para hotfix é:
- Criar a correção na
main. - Gerar uma nova versão estável (
X.Y.Z+1). - Propagar a correção para
nexterelease-candidatese necessário. - Dependendo do contexto:
- Se estava em RC, descer para a última versão de RC.
- Se estava em Beta, descer para a última versão de Beta.
🔹 Semantic Release
- Automatiza:
- Geração de versões (
beta,rc,stable). - Criação de changelog.
-
Disparo de workflows de publicação (rollout e rollback).
-
Tipos de versão:
- Beta: gerada em merges na branch
next. - RC: gerada ao criar uma branch
release-candidate. - Stable: promovida da
release-candidatepara amain.
🔹 Resumo Visual do Fluxo

🔹 Boas Práticas
- Sempre iniciar novas features a partir da branch
next. - Evitar promover versões beta diretamente para produção.
- Em caso de hotfix, priorizar correção rápida na
maine sincronizar depois nas demais branches. - Acompanhar changelogs gerados automaticamente para garantir transparência das alterações.
- Antes de promover para
main, validar se todos os testes, validações e QA foram concluídos. - Lembrar que a promoção para
maingera workflow de publicação, permitindo rollout/rollback fácil.
✅ Checklist Rápida para o Time
- [ ] Criar branch
feature/nome-da-featurea partir denext. - [ ] Merge na
next→ verificar geração automática de versão beta. - [ ] Validar se a versão beta estável pode seguir para RC.
- [ ] Criar branch
release-candidatea partir denext. - [ ] Validar apenas bugfixes dentro de
release-candidate. - [ ] Promover
release-candidateparamain→ gera versão estável e dispara workflow de publicação. - [ ] Confirmar changelog gerado pelo Semantic Release.
- [ ] Em caso de hotfix, aplicar diretamente na
main, gerar versão e sincronizar comnext/RC.