Frage

Ich bin relativ neu für kontinuierliche Integrationsserver. Ich habe GitLab (v6.5) für eine Weile für eine Weile verwendet, um Projekte zu verwalten, aber ich möchte mit dem Gitlab CI beginnen, um sicherzustellen, dass Tests passieren und den Erfolg bauen.

Mein Test-Setup besteht aus zwei virtuellen Maschinen: eine Maschine für Gitlab und eine andere Maschine für die Gitlab CI (und Läufer). In der Produktion habe ich jedoch nur eine einzige Maschine, die Gitlab läuft. Das Gitlab-Team hat einen interessanter Blogbeitrag ein bisschen zurück, der hervorgeht:

Wenn Sie Tests auf dem CI-Server ausführen, tun Sie es falsch!

Es war ein sehr informativer Beitrag, aber ich bin nicht gekommen, als würde ich diesen bestimmten Punkt verstanden haben. Bedeutet das, dass man GitLab und Gitlab CI auf demselben Server nicht ausführen sollte? Bedeutet es, dass man Gitlab CI- und Gitlab CI-Läufer nicht auf demselben Server ausführen sollte? Oder beide - brauche ich drei Server, eines für jede Aufgabe?

aus demselben Beitrag:

Jeder, der an einen von einem CI-Server getesteten Verzweigung drängen kann, kann diesen Server problemlos besitzen.

Dies bedeutet mir, dass die Läufer das Sicherheitsrisiko sind, da sie in einem Commit enthaltenen Zeug führen können. Wenn das der Fall ist, wie ist die typische Implementierung? Setzen Sie Gitlab und Gitlab CI auf dieselbe Maschine, aber die Läufer auf einer separaten Maschine? Wäre es nicht immer noch saugen, wenn die Runnermaschine beeinträchtigt wurde? So sind die Menschen in Ordnung, ihre Runner-Maschine zu verlieren, solange ihre Code-Maschine sicher ist?

Ich würde das wirklich gerne verstehen - definitiv, bevor ich sie in der Produktion umsetze. Gibt es eine mögliche, noch sichere Art, Gitlab, Gitlab CI und Gitlab CI Läufer auf derselben Maschine zu implementieren?

War es hilfreich?

Lösung

Idealerweise findest du Gitlab-CI und Gitlab auf demselben Host. Andere können mir nicht einverstanden sein, aber der Orchestrator (der Gitlab-CI-Knoten) tut keines der schweren Anhebung. Sein strikter Job Meta IO und Lagerung der Ergebnisse.

mit dem gesagt, ich würde nicht die Läufer auf dieselbe Maschine setzen. GIGLAB-CI-Läufer sind ressourcenintensiv und führen in voller Neigung, auf welcher Maschine Sie sie aufgeben. Es ist eine gute Idee, wenn Sie in der Produktion laufen, um diese auf Spot-Instanzen zu setzen, um zu helfen, einige der Kosten für die Ausführung der häufigsten CPU / Memory Hungry-Builds zu bummeln.

Ich hatte einen Erfolg mit dem Setzen meiner Gitlab-CI-Läufer in digitalem Ozean in kleinen Fällen. Ich mache keine riesigen Builds, aber die Idee ist es, die Arbeitsbelastung an mehreren Servern so zu verteilen, dass Ihr CI-Server so ist:

  • ist ansprechend
  • kann mehrere Projektaufbaut auf einmal erstellen
  • kann Isolation ausüben (dies ist irgendwie willkürlich in dieser Liste)

und ein paar andere Dinge, die nicht sofort in den Sinn kommen.

hoffe das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top