Hier ist ein Teilzitat aus einer Antwort auf die Frage " Wie vermeide ich durch kontinuierliche Integration verursachte Instabilitäten in Testumgebungen? ":
Diese Umgebung friert normalerweise während der Tests ein.
Meine Frage: Was sind Beispielimplementierungen einer eingefrorenen Umgebung? Dh was können Sie tun, um technisch durchzusetzen, dass niemand (außer wenn dies von einem autorisierten Benutzer wie einem Release Manager erlaubt wird) in einer solchen eingefrorenen Umgebung etwas ändern kann?
Erläuterungen :
Ich spreche nicht darüber, was (glaube ich) während der (z. B.) Verarbeitung zum Jahresende in Banken als "eingefrorene Perioden" bezeichnet wird. Dies bedeutet, dass keine Änderungen an Produktionsumgebungen vorgenommen (wiederholt) werden dürfen, um das Risiko zu verringern, dass neue Änderungen / Korrekturen eingeführt werden, die sich auf die Verarbeitung zum Jahresende auswirken können.
Angenommen, Benutzer, die Änderungen trotzdem genehmigen / anwenden dürfen (wie der Release-Manager in meinem Beispiel), tun dies nur in Ausnahmefällen. Zum Beispiel, wenn beim Testen ein Problem mit hohem Schweregrad auftritt, bei dem es nicht möglich ist, einen Fix auf eine nächste Version zu verschieben (da die Produktion gefährdet wäre, wenn die Version ohne einen solchen Fix aktiviert würde).
Hierbei kann es sich lediglich darum handeln, ein automatisiertes Update während des Tests auszusetzen. Der Punkt ist: Vermeiden Sie, dass eine andere Person eine Anwendung A auf Version Y aktualisiert, während ein anderes Team noch Anwendung B in Version X testet, die auf Anwendung A basiert. Dies kann bedeuten, dass ein Wachmann ein Testteam vermeidet, um eine Aktualisierung einer Abhängigkeit unter zu verlangen Prüfung.
quelle
TeamCity verfügt über eine Build-Funktion für gemeinsam genutzte Ressourcen , mit der Sie eine Ressource definieren können, von der mehrere Build-Definitionen abhängen. Build-Definitionen können entweder eine Lesesperre oder eine Schreibsperre erfordern. Sie können auch definieren, ob diese Sperren exklusiv sind oder einen gewissen Grad an Parallelität zulassen.
Wenn wir die folgenden Annahmen über eine gemeinsam genutzte Umgebung mit dem Namen PreProd treffen :
Daher gilt Folgendes:
Sie können einen ähnlichen Mechanismus mit Jenkins verwenden, indem Sie das Ausschluss-Plugin verwenden . Tatsächlich können Sie diese Funktionalität mithilfe von Sperren oder Semaphoren in jeden Prozess integrieren - zum Beispiel Apache ZooKeeper oder HashiCorp Consul .
quelle
Das klingt für mich nach einem Anti-Muster. Ich glaube, jeder oder niemand sollte Zugang zu allen Umgebungen haben.
Wenn Benutzer den Prozess untergraben, würde ich mir den Prozess ernsthaft ansehen, um sicherzustellen, dass er den Menschen nicht im Weg steht.
Die Implementierung eines automatisierten Mechanismus, der einen bestimmten Zustand erzwingt, ist auch nützlich, um Menschen zu ermutigen, die Dinge richtig zu machen. Dies kann über das Konfigurationsmanagement oder die Zerstörung einer unveränderlichen Instanz erfolgen, wenn jemand SSHs dazu bereitstellt
quelle