Este é um post rápido. Precisei documentar a forma como organizamos nosso ambientes aqui na Codevance e então resolvi fazer este post, para, além de documentar, poder compartilhar com vocês e receber feedbacks!
Imagine que nós temos 3 ambientes de trabalho: Desenvolvimento, QA e produção. O fluxo ideal para mantermos todos os ambientes organizados é:
Dividir as novas implementações em dois tipos:
- bugfix: Conserto de algum bug
- feature: Desenvolvimento de uma nova feature
Ter uma branch que corresponda a cada ambiente:
- development: branch que corresponde ao ambiente de Desenvolvimento
- qa: branch que corresponde ao ambiente de QA
- master: branch que corresponde ao ambiente de Produção
Para cada nova implementação, o fluxo a ser percorrido é:
- Fazer um pull request da branch relacionada a implementação para a branch development. Nesta etapa o desenvolvedor faz os testes de integração inerentes ao ambiente de desenvolvimento e aplica o desenvolvimento do seu código para seus pares executarem o processo de Code Review.
- Fazer um merge da branch relacionada a implementação para a branch qa. Com a etapa acima validada, nesta etapa o desenvolvedor valida a implementação com a equipe responsável pela validação da funcionalidade no ambiente de QA.
- Fazer um merge da branch relacionada a implementação para a branch master. Com a etapa acima validada, nesta etapa, o desenvolvedor faz com que a implementação seja integrada ao servidor de produção e seja entregue ao usuário final.
- Com a branch integrada ao ambiente de produção, podemos excluir a branch relacionada a implementação.
O ideal é que, ao realizar os merges e pull requests, os ambientes sejam atualizados automaticamente através da implantação de um serviço de integração contínua.
Vejamos um exemplo da vida real da implementação do fluxo acima
A equipe de QA identificou o seguinte bug:
Admin dO DJANGO não está funcionando
Com este bug em mãos, o desenvolvedor cria uma nova branch chamada bugfix/admin. Verifica o que ocorreu, encontra o erro e faz dois novos commits para consertar o problema.
Então, ele faz um pull request da branch bugfix/admin para a branch development. Seus pares analisam o PR e aprovam. Então, o sistema de integração atualiza automaticamente o ambiente de desenvolvimento. Com o ambiente atualizado, o desenvolvedor executa testes de uso.
Então, ele faz um merge da mesma branch bugfix/admin agora para a branch qa. Então, o sistema de integração atualiza automaticamente o ambiente de QA. Com o ambiente atualizado, e equipe de testes e validação verifica se a implementação está de acordo com o que foi solicitado. Está tudo ok!
Então, ele faz um merge da mesma branch bugfix/admin agora para a branch master. Então, o sistema de integração atualiza automaticamente o ambiente de produção e voilà, temos nossa produção atualizada!
Com a branch bugfix/admin integrada a produção, podemos excluí-la.
Alguns pontos importantes
- É importante manter a organização sempre.
- As branchs de novas implementações devem sempre serem originadas a partir da branch master, que é a que responde a produção. Caso sejam originadas a partir de outra branch que não seja a branch mais estável, commits que fogem do escopo da implementação em questão podem acabar entrando.
- É importante também que a branch master não fique muito desatualizada em relação a branch de qa, pois senão começarão a surgir conflitos na hora de fazer o merge, causando desordem.
Nomenclatura das branchs
A nomenclatura que utilizamos na Codevance segue o seguinte padrão:
<implementation-type>/card-#
A primeira parte corresponde ao tipo de implementação, que pode ser bugfix ou feature. Já a segunda parte corresponde ao número do card (quando trabalhamos com trello), ou issue (quando trabalhamos com github), em que está trabalhando.
Exemplos:
bugfix/card-11
feature/issue-33
Para saber o número dos cards no trello, instale as extensões abaixo no seu navegador:
- https://chrome.google.com/webstore/detail/trello-card-numbers-by-fl/bjbmgbhoaabjfeloohkahgilicjkambi
- https://addons.mozilla.org/en-US/firefox/addon/trello-card-numbers/
***
Como disse, este é o fluxo que utilizamos aqui na Codevance.
Aproveitando, estamos com uma promoção imperdível para quem estiver precisando de desenvolvimento de software: O primeiro ciclo de entrega tem garantia! Se você não gostar da entrega, seja o motivo qual for, nós encerramos a parceria e você não paga nada!
Clique aqui para saber como nós podemos te ajudar!
E ai? O que achou do fluxo? Concorda? Tem uma sugestão para melhorar?
Deixa seu comentário aí embaixo e me procure nas redes sociais para continuarmos o papo. Os links estão logo embaixo!
Abraços