Pular para conteúdo

Processo de Desenvolvimento

Para termos um trabalho fluído, é necessário seguir um processo bem definido, nesse bootcamp iremos introduzir práticas básicas e normalmente usadas no mercado.

mmd

Iniciando o desenvolvimento de uma história

Na planning o épico será apresentado, em seguida todas as histórias que compoem esse épico serão planejadas, cada história será dividida em tasks (tarefas técnicas para concluir a história), cada task será distribuida para um membro da equipe, após a planning começa o dia-a-dia do desenvolvimento, é importante seguir esses passos para ter sucesso no desenvolvimento:

1. Story Opening (Abertura da história)

Antes de iniciar as atividades da sprint é importante todos os membros que vão realizar tasks daquela história se juntarem em uma call para discutirem como cada um vai resolver a sua task, é importante passar pelos seguintes passos:

  • Criar a branch da história seguindo o padrão descrito abaixo
  • Revisar as documentações de arquitetura e engenharia da sprint
  • Fazerem acordos de como vão integrar as partes que dependem uma da outra
  • Tentar identificar as dependencias que uma task tem da outra
  • Decidirem qual a melhor forma de gerenciar os branchs de task para evitar conflitos de código

2. Desenvolvendo uma task

  • Entre no jira e mova a card da task para "Em desenvolvimento"
  • Crie a branch da task baseado no padrão descrito abaixo
  • Desenvolva o código da task
  • Abra um Pull Request no bitbucket da task para a feature task/123456-atividade-xpto -> feature/123456-cadastro-xpto
  • Aguarde o code review de seu Tutor Tech Lead e de pelo menos um de seus colegas de time
  • Verifique se o branch passou na esteira de deployment
  • Finalize a PR mergeando seu branch na feature, não se esqueça de apagar a sua branch para não acumular branchs mortas no repositório

3. Story Closing (Finalizando a história)

Quando todas as tasks da história forem enfim mergeadas, realizar uma nova call com todos os membros que realizaram tasks dentro da história para realizarem os seguintes passos:

  • Criar a Pull Request da feature branch para a main feature/123456-cadastro=de-xpto -> main
  • Fazer um code review coletivo e verificar se está tudo correto
  • Resolver conflitos caso houverem
  • Validar e corrigir os erros da esteira se houverem
  • Testar a funcionalidade se está funcionando corretamente
  • Mergear a feature na main e apagar a branch da feature
  • Criar a tag que representa o incremento de versão do sistema usando o semantic versioning

4. Correção de Bugs (Bugfix)

Quando é encontrado um problema (bug) ou implementação errada das regras de negócio quando o pull request da feature estiver aberta (durante os testes da feature no Story Closing por exemplo), é necessário abrir uma branch de de bugfix bugfix/123456-correcao-botao-errado, corrigir o problema e mergear na feature. Se a feature em questão já tiver sido mergeada na master, precisa criar um branch de hotfix hotfix/123456-correcao-botao-errado, apenas o hotfix pode ser mergeado direto na main, esse é um caso que em projetos reais é uma correção rápida de algo que está atrapalhando a operação do sistema em produção

Modelo de branchs do Git

Aqui está um desenho que representa o fluxo e ciclo de vida das branches

mmd

2. Estrutura de Nomenclatura das Branches

2.1 Nomenclatura das Branches

  • Histórias de Usuário: As branches que representam histórias de usuário devem ser nomeadas como feature/id_jira-nome, onde id_jira é o identificador da história no Jira e nome é uma descrição breve da funcionalidade.
  • Tarefas: As branches relacionadas a tarefas devem ser nomeadas como task/id_jira-nome, onde id_jira é o identificador da tarefa no Jira e nome é uma descrição breve da tarefa.
  • Correção de Bugs: As branches que envolvem correções de bugs devem ser nomeadas como bugfix/id_jira-nome, onde id_jira é o identificador do bug no Jira e nome é uma descrição breve da correção.

2.2 Exemplo de Nomenclatura

  • História de Usuário: feature/JIRA-123-adicionar-autenticação (representando uma história no Jira com ID JIRA-123)
  • Tarefa: task/JIRA-456-adicionar-validação (representando uma tarefa no Jira com ID JIRA-456)
  • Correção de Bug: bugfix/JIRA-789-corrigir-erro-login (representando um bug no Jira com ID JIRA-789)

3. Fluxo de Trabalho com Integração ao Jira

  1. Criar a Ramificação de Funcionalidade:

    • Inicie a partir da branch main e crie uma nova branch para a funcionalidade relacionada à história:
      git checkout main
      git checkout -b feature/JIRA-123-adicionar-autenticação
      
  2. Criar a Ramificação de Tarefa:

    • Dentro da branch feature/JIRA-123-adicionar-autenticação, crie uma nova branch para uma tarefa específica:
      git checkout -b task/JIRA-456-adicionar-validação
      
  3. Desenvolver e Comitar:

    • Realize as mudanças necessárias na branch task/JIRA-456-adicionar-validação e faça os commits:
      git add .
      git commit -m "Implementa a tarefa JIRA-456: adicionar validação"
      
  4. Criar um Pull Request:

    • Após concluir a tarefa, faça push da branch task/JIRA-456-adicionar-validação para o repositório remoto:
      git push origin task/JIRA-456-adicionar-validação
      
    • Acesse o Bitbucket e crie um pull request para mesclar a branch task/JIRA-456-adicionar-validação na branch feature/JIRA-123-adicionar-autenticação.
  5. Mesclar a Tarefa de Volta para a Funcionalidade:

    • Após a revisão e aprovação do pull request, a branch task/JIRA-456-adicionar-validação será mesclada na branch feature/JIRA-123-adicionar-autenticação.
  6. Finalizar a Funcionalidade:

    • Quando a funcionalidade estiver completa e testada, crie um pull request para mesclar a branch feature/JIRA-123-adicionar-autenticação de volta para a branch main.
  7. Remover Branches:

    • Após a mesclagem, você pode excluir as branches de tarefa e funcionalidade:
      git branch -d task/JIRA-456-adicionar-validação
      git branch -d feature/JIRA-123-adicionar-autenticação