Wir möchten einen Continuous Integration (CI) -Dienst für unser Projekt einrichten. Dieser CI-Service sollte alle Aspekte des Projektlebens einschließlich der Bereitstellung steuern.
Das heißt, wir möchten, dass ein CI-Agent bei jeder Iteration ein sauberes System (insbesondere Ubuntu Server) erstellt, unser Projekt dort bereitstellt und Tests ausführt.
Wir würden den CI-Service wahrscheinlich von Grund auf selbst schreiben, da unser Ökosystem eher ungewöhnlich ist. Die Frage ist: Wie kann ein sauberes Schiefersystem für jede CI-Iteration effektiv bereitgestellt werden?
Bei der Projektbereitstellung werden einige Debian-Pakete installiert, mehrere Nginx-Sites konfiguriert und einige Pakete systemweit in einem implementierungssprachenspezifischen Paketmanager (LuaRocks) installiert. Nichts aufdringlicheres als das (glaube ich). Daher ist es wichtiger, schnell einen sauberen Slate einrichten zu können (innerhalb einer Minute auf moderner Hardware, schneller - besser), als absolute Isolation und Sauberkeit zu gewährleisten.
Ich sehe zwei Möglichkeiten, wie wir das tun können, was wir brauchen:
- Entweder ein Gefängnis errichten (wie lxc vielleicht).
- Oder installieren Sie eine virtuelle Maschine, die Snapshots erstellen und verwenden kann.
Aber zu diesem Zeitpunkt habe ich nicht genügend Informationen, um mich zu entscheiden.
Was würden Sie raten? Irgendwelche anderen Optionen? Irgendwelche spezifischen Werkzeugnamen?
Hinweis: Der CI-Dienst wird in einem Citrix XenServer-Gast ausgeführt. Bezahlte Lösungen sind in Ordnung, wenn die Preise angemessen sind. (Normalerweise sind sie in diesem Bereich nicht sinnvoll.) Remote-CI-Lösungen sind nicht in Ordnung.