Despliegue web automatizado en múltiples servidores con Mercurial

He estado mirando algunos flujos de trabajo para Mercurial recientemente, a medida que comenzamos a usarlo para nuestro desarrollo web. Necesitamos una forma automatizada de propagar los cambios que se envían a las instancias de prueba y en vivo a múltiples puntos finales. Aquí hay un diagrama de la idea:

         +-------+
         |Dev    |
         |       |
         +-------+
             |  Push
             +--------+
                      |
                      V
+-------+   Push  +-------+
|Live   |<--------|Test   |
|server |         |server |
+-------+         +-------+
    |    +-------+    |    +-------+
    +--->|Live 1 |    +--->|Test 1 |
    |    |       |    |    |       |
    |    +-------+    |    +-------+
    |                 |
    |    +-------+    |    +-------+
    +--->|Live 2 |    +--->|Test 2 |
    |    |       |    |    |       |
    |    +-------+    |    +-------+
    |                 |
    |    +-------+    |    +-------+
    +--->|Live 3 |    +--->|Test 3 |
         |       |         |       |
         +-------+         +-------+

ásicamente, la idea es que todo lo que nosotros, como desarrolladores, tendríamos que hacer es, una vez que el desarrollo haya alcanzado un nivel estable, emitir el comando push (que no necesariamente tiene que ser solo unhg push) al servidor de prueba, y desde allí se propagaría automáticamente. Luego, una vez que se realiza la prueba, lo empujamos de prueba a vida (o, si fuera más fácil, podríamos pasar de desarrollo a vida), y eso también se propagaría a cada una de las diferentes instancias.

ería bueno si pudiéramos agregar nuevas pruebas e instancias en vivo con bastante facilidad (por ejemplo, tal vez si las IP se almacenaran en una base de datos que podría leerse mediante un script, etc.).

¿Cuál sería la mejor manera de lograr esto? Sé sobre ganchos Mercurial. Tal vez un script en proceso que el gancho se ejecutará? También he buscado enTel, ¿sería una buena opción?

Además, ¿qué tipo de software de soporte necesitaría cada uno de los puntos finales? ¿Sería más fácil si existiera un repositorio Mercurial en cada servidor? ¿Sería beneficioso el acceso a SSH? Etc ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta