Nous voulons mettre en place un service d'intégration continue (CI) pour notre projet. Ce service CI doit contrôler tous les aspects de la vie du projet, y compris le déploiement.
Autrement dit, nous voulons qu'un agent CI à chaque itération prenne un système propre (en particulier Ubuntu Server), y déploie notre projet et exécute des tests.
Nous écririons probablement nous-mêmes le service CI, à partir de zéro, car notre écosystème est plutôt inhabituel. La question est: comment fournir efficacement un système d'ardoise propre pour chaque itération CI?
Le déploiement du projet installe quelques packages Debian, configure plusieurs sites nginx et installe également certains packages dans un gestionnaire de packages spécifique au langage d'implémentation (LuaRocks), à l'échelle du système. Rien de plus intrusif que ça (je crois). Il est donc plus important de pouvoir mettre en place une table rase rapidement (en moins d'une minute sur du matériel moderne, plus vite - mieux) que d'assurer une isolation et une propreté absolues.
Je vois deux façons de faire ce dont nous avons besoin:
- Soit mettre en place une prison quelconque (comme lxc, peut-être).
- Ou installez une machine virtuelle capable de créer des instantanés et utilisez-les.
Mais à ce stade, je n'ai pas suffisamment d'informations pour décider.
Que conseilleriez-vous? D'autres options? Des noms d'outils spécifiques?
Remarque: Le service CI serait exécuté à l'intérieur d'un invité Citrix XenServer. Les solutions payantes sont OK si les prix sont raisonnables. (Habituellement, ils ne sont pas raisonnables dans ce domaine.) Les solutions CI distantes ne sont pas correctes.