Eu tenho que criar um novo processo de preparação para o nosso desenvolvimento e teste.
A qualquer momento, há apenas cerca de 4 ramos git sendo desenvolvidos e testados ativamente. Em cada ramificação git, pode haver scripts de evolução do banco de dados (SQL direto) que devem ser executados, bem como scripts de evolução do back-end para processamento mais pesado (essencialmente, essas são rotas HTTP que devem ser chamadas no aplicativo usando credenciais de administrador que executam o banco de dados migrações e outras alterações que seriam muito difíceis / impossíveis de script nos scripts simples de evolução SQL mencionados anteriormente).
Nosso banco de dados ao vivo tem tamanho moderado ~ 4,2 GB. Temos um novo servidor Dell PowerEdge que está pronto para ser configurado e está à minha disposição.
Gostaria de receber conselhos sobre as seguintes perguntas, bem como saber como o DevOps mais experiente abordaria isso:
Como posso executar várias ramificações diferentes no servidor intermediário? Essas ramificações são exibidas e desaparecem frequentemente à medida que passam no controle de qualidade, são mescladas no mestre e são liberadas.
Como eu configuraria o sistema de evolução do banco de dados para garantir que ele sempre tenha o banco de dados apropriado para cada filial? Cada ramificação pode fazer modificações no banco de dados de maneiras diferentes que não são necessariamente compatíveis entre si até serem mescladas.
Como mantenho essas ramificações atualizadas? Existe uma maneira de puxar automaticamente confirmações em cada ramificação?
Gostaria muito de mais informações, pois estou um pouco perdido sobre como configurar tudo isso. O fluxo de trabalho atual é difícil para todos os envolvidos: os desenvolvedores têm uma cópia local completamente isolada do aplicativo em execução localmente e o controle de qualidade tem de três a quatro laptops em rotação que atuam como seus "servidores" temporários.