Git - Melhores práticas na utilização de branches

git-github

#1

Olá pessoal!

Supondo que existam duas branches:

1) master - versão de produção
2) release2018 - branch criado a partir da master, possui novas funcionalidades que serão disponibilizadas em 2018

Toda a homologação foi realizada utilizando o branch “release2018”, quando chegar o momento de subir as alterações para produção, qual é a melhor prática? Realizar um merge para a “master” e implantar este branch ou subir o “release2018”, pois o mesmo já está homologado, e recriar a “master” baseado nele?


#2

Olá!

A primeira opção é a prática mais adotada: o merge para a master. A master tem tudo o que está em produção.

Também é uma boa prática fazer uma tag no momento em que você integrou suas mudanças na master.


#3

Oi Alexandre,

Obrigada pelo retorno! Então o ideal seria utilizar os passos abaixo?

1) Realizar o merge para a master
2) Criar a tag da integração da release
3) Testar novamente todas as funcionalidades
4) Subir as alterações em produção


#4

Acho que são esses passos mesmo!


#5

Os problemas que vejo nesta abordagem são os seguintes:

1) Ter tempo para retestar as funcionalidades quando a integração ocorrer no branch “master”, onde trabalho, por exemplo, os testes ainda são manuais e às vezes somos informados da implantação apenas dias antes, então realizar o merge e garantir que tudo estará funcionando em pouco tempo será complicado.

2) O merge foi realizado na “master” e a implantação está prevista para a próxima semana, porém surgiu um erro grave em produção e não poderemos esperar até a implantação da release. Neste caso entendo que seria necessário realizar um revert das novas funcionalidades, subir a correção e depois fazer o merge novamente, se estivéssemos usando o branch “release2018” só teríamos que fazer o merge desta correção antes de subir o branch em produção.


#6

Você pode fazer tags na master para voltar de maneira mais rápida, sem reverter commits.

Outra coisa é, dado um novo erro, o ideal seria corrigir o erro pontual e não voltar tudo para a versão anterior. No caso de falhas, bola pra frente.

Mas acho que você mencionou a grande questão: os testes manuais. Seria bom investir em automação de testes em vários níveis (de unidade, de integração e de sistema) pra validar mais rapidamente a nova versão.

Além disso, o esforço entre a validação homologação e a implantação em produção deve acontecer por diferenças entre os ambientes. O uso de ferramentas open-source e de containers permite que os ambientes de desenvolvimento, testes, homologação e produção sejam extremamente semelhantes, detectando falhas o mais cedo possível.


#7

Legal Alexandre, muito obrigada pela ajuda, como você mencionou acho que a grande questão são os testes manuais.