Sei que a recomendação padrão para versionamento do Discourse é usar tests-passed, mas até agora nossa equipe tem especificado a versão do Discourse no app.yml, por exemplo version: 2.7.0.beta1. Fazemos isso porque queremos ter controle explícito sobre qual versão está em produção.
No entanto, vimos neste tópico que há um bug que impede que façamos isso como sempre fizemos. Isso é um problema devido à forma como fazemos o autoscaling do nosso fórum. Por exemplo, digamos que a versão 2.7.0.beta1 esteja atualmente em produção. Mas então recebemos um pico de tráfego no fórum e precisamos iniciar outra instância para escalar. Se tivermos tests-passed no app.yml e houver havido outro lançamento do Discourse desde nossa última atualização em produção, será iniciada uma nova instância (2.7.0.beta2) que entra em conflito com a existente. Assim, teremos duas versões diferentes em execução, possivelmente com alterações no banco de dados e outros problemas de compatibilidade, o que resulta em falhas no funcionamento da produção.
Há também outras razões pelas quais podemos não querer que haja atualização automática dessa maneira, como problemas de compatibilidade de plugins e, em geral, a necessidade de testar completamente as coisas no staging antes de liberar para produção.
Como nota, temos tentado fazer esta solução funcionar para que possamos especificar a versão do Discourse, mas atualmente ela está falhando com a versão 2.7.0.beta3. Obtemos um erro do bundler semelhante ao visto aqui, e sei que a solução daquela pessoa foi voltar a usar tests-passed.
Então, minha pergunta é: como podemos controlar efetivamente o versionamento do nosso Discourse, dado nosso ambiente de autoscaling e a necessidade geral de especificar qual versão do Discourse está implantada em produção? Gostaria muito de saber o que outros têm feito nessa situação.