2016-04-18 19 views
6

Se ci sono più di un corridore disponibile per un progetto, in che modo gitlab ci decide quale corridore usare?In che modo gitlab decide quale corridore usare per un lavoro

Ho un'installazione omnibus gitlab 8.6.6-ee, con 2 guide configurate. I corridori sono identici (immagini docker, configurazione, ecc.) Tranne che sono in esecuzione su computer diversi.

Se sono entrambi inattivi e arriva un lavoro in cui potrebbero essere eseguiti entrambi, quale verrà eseguito?

+0

Perché non creare un test progettare ed eseguire alcune build? Immagino che raccolga il primo corridore disponibile, e se più corridori sono inattivi prende a caso. – BrokenBinary

risposta

2

Per aggiungere alla risposta di Rubinum, il "primo" corridore sarebbe il corridore che controlla per primo tutti i criteri. Ad esempio, le etichette potrebbero limitare su quali runner eseguire determinati lavori.

I runner interrogano il server gitlab ogni X secondi per verificare se ci sono build. se c'è una costruzione in coda e soddisfare molteplici criteri, il primo a chiedere vincerà

Update per rispondere a commenti:

Runners comunicano attraverso il CI API http://docs.gitlab.com/ce/ci/api/builds.html per ottenere la costruzione di stato. Questo alla fine implicherà che diventerà una scelta più o meno casuale del corridore in base a quando ha finito l'ultimo lavoro e l'importo x di ms che è in attesa di controllo.

Per rispondere completamente alla domanda:

merito va a BM5k dopo aver scavato attraverso il codice e trovando che x = 3 secondi basate su this e this. Inoltre rilevato che:

quale macchina scaricatore + macchina corridore utilizzerà una volta selezionato che runner) rivela che il machine selection è più o meno (efficace) casuale nonché

+0

Interessante. Sai dove questo accade nel codice? – BM5k

+0

E, per verificare che ti capisco correttamente, stai dicendo che il server non "decide" realmente quale corridore usare, ma passa casualmente i lavori al prossimo corridore che esegue il polling (supponendo che il corridore corrisponda a tutti i requisiti del lavoro). – BM5k

+0

Risposta modificata per adattarsi ai commenti precedenti. Non ho trovato dove 'x'amount è impostato nel codice, ma questo è il progetto in cui viene configurato https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/tree/master . –

1

Gitlab CI assegna i lavori a quei corridori che sono disponibili. Se un corridore non è disponibile a causa di essere occupato, Gitlab CI assegna il lavoro ad altri corridori disponibili. Nel tuo caso assegnerà sempre i lavori al primo corridore (chiunque sia).

Se si desidera specificare l'esecuzione su uno specifico corridore/mashine poi dare un'occhiata al mio post here.

A mio parere la sua buona per non si sa quale corridore verrà eseguito il vostro costruire se si utilizza finestra mobile perché questo è il vantaggio dell'archetria corridore/docker.

+0

ma quale corridore è "primo"? – BM5k

Problemi correlati