Vogliamo creare un servizio di integrazione continua (CI) per il nostro progetto. Tale servizio di CI dovrebbe controllare tutti gli aspetti della vita del progetto, compresa la distribuzione.
Cioè, vogliamo che un agente CI ad ogni iterazione prenda un sistema pulito (in particolare Ubuntu Server), distribuisca lì il nostro progetto ed esegua test.
Probabilmente scriveremmo il servizio CI da zero, poiché il nostro ecosistema è piuttosto insolito. La domanda è: come fornire efficacemente un sistema di ardesia pulito per ogni iterazione CI?
La distribuzione del progetto installa alcuni pacchetti Debian, configura diversi siti nginx e installa anche alcuni pacchetti in un gestore di pacchetti specifico per la lingua di implementazione (LuaRocks), a livello di sistema. Niente di più invadente di quello (credo). Quindi, è più importante essere in grado di impostare velocemente un'ardesia pulita (entro un minuto su hardware moderno, più veloce - migliore) che garantire isolamento e pulizia assoluti.
Vedo due modi per fare ciò di cui abbiamo bisogno:
- O imposta una prigione di qualche tipo (come lxc, forse).
- Oppure installa qualche macchina virtuale in grado di fare istantanee e usarle.
Ma a questo punto non ho abbastanza informazioni per decidere.
Cosa consiglieresti? Altre opzioni? Qualche nome di strumento specifico?
Nota: il servizio CI verrebbe eseguito all'interno di un guest Citrix XenServer. Le soluzioni a pagamento sono OK se i prezzi sono ragionevoli. (Di solito non sono ragionevoli in questo campo.) Soluzioni CI remote non OK.