Мы хотим настроить сервис непрерывной интеграции (CI) для нашего проекта. Эта служба CI должна контролировать все аспекты жизненного цикла проекта, включая развертывание.
То есть мы хотим, чтобы агент CI на каждой итерации брал чистую систему (в частности, Ubuntu Server), развертывал там наш проект и запускал тесты.
Мы, вероятно, сами напишем сервис CI, поскольку наша экосистема довольно необычна. Вопрос: как эффективно обеспечить систему чистого листа для каждой итерации КИ?
Развертывание проекта устанавливает несколько пакетов Debian, настраивает несколько сайтов nginx, а также устанавливает некоторые пакеты в общесистемном диспетчере пакетов для конкретного языка (LuaRocks). Нет ничего более навязчивого, чем это (я считаю). Таким образом, более важно иметь возможность быстро настроить чистый лист (в течение минуты на современном оборудовании, быстрее - лучше), чем обеспечить абсолютную изоляцию и чистоту.
Я вижу два способа сделать то, что нам нужно:
- Либо установить какую-нибудь тюрьму (например, lxc).
- Или установите виртуальную машину, которая может делать снимки, и используйте их.
Но на данный момент мне не хватает информации, чтобы принять решение.
Что бы вы посоветовали? Есть еще варианты? Какие-то конкретные названия инструментов?
Примечание. Служба CI будет работать внутри гостевой системы Citrix XenServer. Платные решения в порядке, если цены разумные. (Обычно они не являются разумными в этой области.) Решения удаленного CI не в порядке.