Queremos establecer un servicio de integración continua (CI) para nuestro proyecto. Ese servicio de CI debe controlar todos los aspectos de la vida del proyecto, incluida la implementación.
Es decir, queremos que un agente de CI en cada iteración tome un sistema limpio (específicamente Ubuntu Server), implemente nuestro proyecto allí y ejecute pruebas.
Probablemente escribiríamos el servicio de CI nosotros mismos, desde cero, ya que nuestro ecosistema es bastante inusual. La pregunta es: ¿cómo proporcionar un sistema de pizarra limpia para cada iteración de CI?
La implementación del proyecto instala algunos paquetes de Debian, configura varios sitios nginx y también instala algunos paquetes en un administrador de paquetes de implementación específico del lenguaje (LuaRocks), en todo el sistema. Nada más intrusivo que eso (creo). Por lo tanto, es más importante poder configurar una pizarra limpia rápidamente (dentro de un minuto en hardware moderno, más rápido, mejor) que garantizar un aislamiento y una limpieza absolutos.
Veo dos formas de hacer lo que necesitamos:
- O bien, establecer una cárcel de algún tipo (como lxc, tal vez).
- O instale alguna máquina virtual que pueda hacer instantáneas y úselas.
Pero en este momento no tengo suficiente información para decidir.
¿Qué me aconsejarías? ¿Alguna otra opción? ¿Algún nombre de herramienta específico?
Nota: El servicio de CI se ejecutará dentro de un invitado Citrix XenServer. Las soluciones pagas están bien si los precios son razonables. (Por lo general, no son razonables en este campo). Las soluciones de CI remotas no están bien.