Um Rubinums Antwort hinzuzufügen, wäre der "erste" Läufer derjenige, der zuerst eincheckt, der alle Kriterien erfüllt. Zum Beispiel könnten Labels festlegen, auf welchen Laufwerken bestimmte Jobs ausgeführt werden.
Die Runner fragen den Gitlab-Server alle X Sekunden ab, um zu prüfen, ob Builds vorhanden sind. Wenn es ein Build Warteschlange gestellt und mehrere Kriterien erfüllen ist, um die erste gewinnt fragen
aktualisieren Kommentare zu beantworten:
Runners kommunizieren über das CI-API http://docs.gitlab.com/ce/ci/api/builds.html zu erhalten Status zu bauen. Dies wird schließlich implizieren, dass es eine mehr oder weniger zufällige Wahl des Läufers basierend darauf wird, wann er den letzten Job beendet hat und die x
Menge von ms
darauf wartet zu überprüfen.
vollständig Um die Frage zu beantworten:
Kredit geht an BM5k nachdem sie durch den Code zu graben und finden, dass x = 3
Sekunden basierend auf this und this. Auch festgestellt, dass:
, welche Maschine eine Docker + Maschinenläufer wird benutzen, wenn die Läufer ausgewählt wurde) zeigt, dass die machine selection mehr oder weniger (effektiv) zufällig auch
Warum nicht erstellen Test Projizieren und ein paar Builds ausführen? Ich würde mir vorstellen, dass es den ersten verfügbaren Läufer auswählt, und wenn mehrere Läufer im Leerlauf sind, wählt er zufällig. – BrokenBinary