warum führt die Pipeline nur den ersten Gitlab-Runner aus?

warum führt die Pipeline nur den ersten Gitlab-Runner aus?

Ich registriere 6 Gitlab-Runner und wenn ich dann auf den Gitlab-Server pushe, führt die Pipeline nur den ersten Gitlab-Runner aus? Warum passiert das? Ich erwarte, dass die Pipeline auf 6 Servern läuft. Danke.

Antwort1

Dies ist ein bekanntes Verhalten bei SSH-Diensten, aber da die Implementierung Ihres Tools nicht im Detail beschrieben ist, habe ich keine Ahnung, ob es sich hier um ein ähnliches Problem handelt.

Bei SSH besteht das Problem darin, dass der lokale Dienst davon ausgeht, dass der Remote-Dienst die Standardeingabe vom lokalen Computer liest. Daher liest er präventiv lokale Daten und sendet einen Block an den Remote-Dienst, um dessen Startzeit zu verbessern.

Wenn Sie sich in einer Schleife von Remote-Aufrufen befinden, werden alle Eingaben aus der Schleifensteuerung abgesaugt und der zweite Schleifenzyklus wird EOF.

Die Lösung in SSH besteht darin, (a) die Option -n zu verwenden, um das Senden lokaler Daten zu unterbinden, oder (b) die SSH-Eingabe von /dev/null umzuleiten, sodass sie ohnehin nicht lesen kann.

Sie können Daten auch als Echo in den SSH-Befehl selbst einfügen oder seine Eingabe aus einer Datei oder einem anderen lokalen Befehl weiterleiten und so die lokale Standardeingabe umgehen.

Sie sollten in der Lage sein, Ihren Git-Lab-Runner unter strace auszuführen, um herauszufinden, ob er unerwartet stdin liest.

verwandte Informationen