2016-04-18 45 views
6

Jeśli jest więcej niż jeden dostępny biegacz dla projektu, w jaki sposób gitlab ci decyduje, którego biegacza użyć?W jaki sposób gitlab decyduje, który z biegaczy będzie używał do pracy?

Mam instalację omnibus gitlab 8.6.6-ee, z skonfigurowanymi 2 biegaczami. Biegacze są identyczni (obrazy doków, konfiguracja itp.), Z tym wyjątkiem, że działają na różnych komputerach.

Jeśli oba są bezczynne i pojawia się zlecenie, które z nich może zostać uruchomione, a które uruchomi się?

+0

Dlaczego nie stworzyć test projektować i uruchamiać kilka kompilacji? Wyobrażam sobie, że wybiera on pierwszego dostępnego biegacza, a jeśli wielu biegaczy jest bezczynnych, wybiera losowo. – BrokenBinary

Odpowiedz

2

Aby dodać do odpowiedzi Rubinum, "pierwszy" biegacz byłby tym, który biegacz, który najpierw sprawdzi, spełnia wszystkie kryteria. Na przykład etykiety mogą ograniczać, na których runnerach działają określone zadania.

Biegacze odpytują serwer gitlab co X sekund, aby sprawdzić, czy są kompilacje. Jeśli istnieje kompilacji w kolejce i stwardnienie spełniać kryteria, najpierw zapytać wygra

Update, aby odpowiedzieć na komentarze:

Runners komunikować się za pośrednictwem interfejsu API CI http://docs.gitlab.com/ce/ci/api/builds.html aby zbudować status. To ostatecznie implikuje, że stanie się bardziej lub mniej losowym wyborem biegacza na podstawie tego, kiedy zakończyło ostatnią pracę i x ilość czeka na sprawdzenie.

Aby całkowicie odpowiedzieć na pytanie:

zasługa BM5k po wykopaniu przez kod i stwierdzając, że x = 3 sekund na podstawie this i this. stwierdzono również, że:

który machine a doker + maszyna zawodnik użyje raz został wybrany, że biegacz) ujawnia, że ​​machine selection jest bardziej lub mniej (efektywnie) losowy, jak również

+0

Interesujące. Czy wiesz, gdzie to dzieje się w kodzie? – BM5k

+0

I, aby sprawdzić, czy rozumiem cię poprawnie, mówisz, że serwer tak naprawdę nie "decyduje", którego runner użyć, po prostu losowo przekazuje zadania następnemu biegaczowi, który sonduje (zakładając, że zawodnik pasuje do wszystkich wymagań stanowiska). – BM5k

+0

Edytowano odpowiedź, aby pasowała do poprzednich komentarzy. Nie znalazłem, gdzie 'x'amount jest ustawiony w kodzie, ale jest to projekt, w którym jest skonfigurowany https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/tree/master . –

1

Gitlab CI przypisuje zadania do tych biegaczy, którzy są dostępni. Jeśli biegacz nie jest dostępny, ponieważ jest zajęty, Gitlab CI przypisuje to zadanie innym biegaczom, którzy są dostępni. W twoim przypadku zawsze przypisuje zadania do pierwszego biegacza (kimkolwiek jest).

Jeśli chcesz określić wykonanie w określonym płozy/mashine następnie spojrzeć na mojego postu here.

Moim zdaniem dobrze jest nie wiedzieć, który zawodnik będzie uruchomić build jeśli używasz docker ponieważ ów korzyść z archeticture runner/docker.

+0

, ale który biegacz jest "pierwszy"? – BM5k