Workflow de Desenvolvimento
Este guia documenta o processo de desenvolvimento e deploy dos projetos Treino GO.
Ferramentas de Automação
Todos os projetos utilizam as seguintes ferramentas para garantir qualidade e consistência:
- Semantic Release - Versionamento automático baseado em commits
- Husky - Git hooks para validação antes de commits
- Commitlint - Validação de mensagens de commit
Convenções de Commit
Todos os commits devem seguir o padrão Conventional Commits.
Formato
<tipo>(<escopo>): <descrição>
[corpo opcional]
[rodapé opcional]
Tipos Principais
feat:Nova funcionalidadefix:Correção de bugdocs:Alterações na documentaçãostyle:Formatação de códigorefactor:Refatoração sem mudança de comportamentoperf:Melhorias de performancetest:Adição ou correção de testeschore:Alterações em ferramentas ou configurações
Exemplos
feat: adicionar filtro de alunos no dashboard
fix: corrigir cálculo de tempo de treino
docs: atualizar README com instruções de deploy
Para mais detalhes, consulte a documentação oficial do Commitlint.
Processo de Desenvolvimento
1. Criar uma Branch
IMPORTANTE: Nunca commitar diretamente na branch main.
# Atualizar a main
git checkout main
git pull origin main
# Criar nova branch
git checkout -b feat/minha-nova-feature
2. Fazer Commits
Faça commits seguindo as convenções:
git add .
git commit -m "feat: adicionar nova funcionalidade"
O Husky validará automaticamente:
- Formato da mensagem de commit
- Testes (se aplicável)
- Linting do código
3. Push e Pull Request
# Fazer push da branch
git push origin feat/minha-nova-feature
Em seguida, abra um Pull Request no GitHub.
4. Preview Automático (Front-ends)
Nos projetos front-end, ao abrir o Pull Request:
- Um step de deploy é iniciado automaticamente pela Cloudflare
- Uma URL de preview é gerada
- Você pode testar suas alterações nesta URL temporária
5. Merge
Após aprovação e testes:
- Acesse o Pull Request no GitHub
- Clique em "Squash and merge"
- Confirme o merge
SEMPRE use "Squash and merge" para manter o histórico limpo.
Deploy Automático
Após o merge na main, o seguinte processo ocorre automaticamente:
Backend (Render)
- Render detecta mudanças na branch
main - Build é executado
- Nova versão é deployada
- Semantic Release gera nova release e tag
Front-ends (Cloudflare Pages)
- Cloudflare Pages detecta mudanças na branch
main - Build é executado
- Nova versão é deployada globalmente
- Semantic Release gera nova release e tag
Versionamento Automático
O Semantic Release calcula automaticamente a nova versão baseando-se nos tipos de commits:
feat:→ Incrementa versão MINOR (1.0.0 → 1.1.0)fix:→ Incrementa versão PATCH (1.0.0 → 1.0.1)BREAKING CHANGE:→ Incrementa versão MAJOR (1.0.0 → 2.0.0)
Exemplo de Fluxo
# Versão atual: 1.2.3
# Commits no PR:
# - feat: adicionar filtro de busca
# - fix: corrigir bug no login
# Após merge → Nova versão: 1.3.0
Resumo do Fluxo
graph LR
A[Criar Branch] --> B[Commits]
B --> C[Push]
C --> D[Pull Request]
D --> E[Preview URL]
E --> F[Revisão]
F --> G[Squash and Merge]
G --> H[Deploy Automático]
H --> I[Release Gerada]
- Criar branch a partir da
main - Fazer commits seguindo convenções
- Push e abrir Pull Request
- Testar usando Preview URL (front-ends)
- Fazer merge usando "Squash and merge"
- Deploy e release gerados automaticamente