Sé que la opción predeterminada/recomendada para la versionado de Discourse es tests-passed, pero hasta ahora nuestro equipo ha estado especificando la versión de Discourse en el archivo app.yml, por ejemplo version: 2.7.0.beta1. Lo hacemos porque queremos poder controlar explícitamente qué versión está en producción.
Sin embargo, vimos en este tema que hay un error que nos impide hacerlo como siempre hemos hecho. Esto es un problema debido a cómo realizamos el escalado automático de nuestro foro. Por ejemplo, supongamos que la versión 2.7.0.beta1 está actualmente en producción. Pero luego recibimos un aumento repentino de tráfico en el foro y necesitamos levantar otra instancia para escalar. Si tenemos tests-passed en el app.yml y ha habido otra versión de Discourse desde nuestra última actualización de producción, se levantará una nueva instancia (2.7.0.beta2) que entra en conflicto con la existente. Entonces tendríamos dos versiones diferentes en funcionamiento, posiblemente con cambios en la base de datos y otros problemas de compatibilidad, lo que provocaría que la producción no funcione correctamente.
También hay otras razones por las que podríamos no querer que se actualice automáticamente de esta manera, como problemas de compatibilidad con complementos y, en general, la necesidad de probar completamente las cosas en el entorno de staging antes de lanzarlas a producción.
Como nota adicional, hemos estado intentando que funcione esta solución para poder especificar la versión de Discourse, pero actualmente falla con la versión 2.7.0.beta3. Obtenemos un error de bundler similar al visto aquí, y sé que la solución de esa persona fue volver a usar tests-passed.
Así que mi pregunta es: ¿cómo podemos controlar eficazmente la versionado de Discourse, dado nuestro entorno de escalado automático y la necesidad general de especificar qué versión de Discourse está desplegada en producción? Me encantaría saber qué han hecho otros en esta situación.