Sou desenvolvedor de software em uma equipe ágil bastante grande (temos oito desenvolvedores ativamente fazendo alterações em um único repositório de código). A cada duas semanas, lançamos uma nova versão do nosso software para produção. Aqui está o nosso fluxo de trabalho atual:
- Ao iniciar uma nova tarefa, os desenvolvedores criam um "ramo de recurso" fora do ramo de desenvolvimento principal (usamos git ) e resolvemos esse novo ramo
- Depois que um desenvolvedor termina o trabalho em sua tarefa, ele mescla sua ramificação de recursos novamente na ramificação de desenvolvimento
- O desenvolvedor mescla a ramificação de desenvolvimento na ramificação de controle de qualidade.
- Uma construção é acionada fora da ramificação do controle de qualidade. A saída dessa compilação é implantada em nosso ambiente de controle de qualidade para permitir que os testadores iniciem seus testes.
É bastante comum que nossos testadores encontrem problemas com esses novos recursos que foram mesclados ao ramo de controle de qualidade. Isso significa que, a qualquer momento, o ambiente de controle de qualidade provavelmente contém vários novos recursos - alguns testados, livres de erros e outros quebrados. Isso dificulta a liberação porque é raro que a construção do controle de qualidade esteja pronta para produção.
Para atenuar isso, tentamos iniciar um "congelamento do controle de qualidade", o que significa que os desenvolvedores não mesclam nosso ramo de desenvolvimento ao ramo de controle de qualidade alguns dias antes do lançamento. As correções de bugs no ambiente de controle de qualidade são feitas diretamente na filial de controle de qualidade e mescladas na filial de desenvolvimento. Teoricamente, isso mantém os recursos novos e quebrados fora do controle de qualidade, enquanto ainda nos permite corrigir problemas que já estão no controle de qualidade.
Embora esse conceito de "congelamento do controle de qualidade" tenha sido parcialmente bem-sucedido, é difícil coordenar e as pessoas geralmente ficam confusas sobre a possibilidade de mesclar-se ao controle de qualidade. Também tem sido difícil definir um prazo de "congelamento do controle de qualidade" - todo mundo gosta da ideia de um espaço para respirar entre o congelamento e o lançamento, mas, na prática, eles preferem ter seu recurso no próximo lançamento a respeitar o prazo.
Existe uma maneira melhor de garantir que tenhamos uma compilação limpa para nossos lançamentos a cada duas semanas?