Pular para o conteúdo principal

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 funcionalidade
  • fix: Correção de bug
  • docs: Alterações na documentação
  • style: Formatação de código
  • refactor: Refatoração sem mudança de comportamento
  • perf: Melhorias de performance
  • test: Adição ou correção de testes
  • chore: 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:

  1. Um step de deploy é iniciado automaticamente pela Cloudflare
  2. Uma URL de preview é gerada
  3. Você pode testar suas alterações nesta URL temporária

5. Merge

Após aprovação e testes:

  1. Acesse o Pull Request no GitHub
  2. Clique em "Squash and merge"
  3. 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)

  1. Render detecta mudanças na branch main
  2. Build é executado
  3. Nova versão é deployada
  4. Semantic Release gera nova release e tag

Front-ends (Cloudflare Pages)

  1. Cloudflare Pages detecta mudanças na branch main
  2. Build é executado
  3. Nova versão é deployada globalmente
  4. 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]
  1. Criar branch a partir da main
  2. Fazer commits seguindo convenções
  3. Push e abrir Pull Request
  4. Testar usando Preview URL (front-ends)
  5. Fazer merge usando "Squash and merge"
  6. Deploy e release gerados automaticamente