configurarea alergători în GitLab
- tipuri de alergători
- alergători partajate
- cum alergători partajate alege locuri de muncă
- activați alergători partajate
- dezactivați alergători partajate
- alergători de grup
- creați un alergător grup
- Vizualizați și gestionați alergători de grup
- alergător de grup
- alergători specifici
- creați un alergător specific
- activați un alergător specific pentru un anumit proiect
- împiedicați activarea unui alergător specific pentru alte proiecte
- alergători partajate
- ștergeți manual memoria cache a alergătorului
- setați timeout-ul maxim de lucru pentru un alergător
- aveți grijă cu informațiile sensibile
- împiedicați alergătorii să dezvăluie informații sensibile
- furci
- vectori de atac în alergători
- Resetați jetonul de înregistrare a alergătorului pentru un proiect
- determinați adresa IP a unui alergător
- determinați adresa IP a unui alergător partajat
- determinați adresa IP a unui anumit alergător
- utilizați etichete pentru a limita numărul de joburi folosind alergătorul
- alergătorul rulează numai joburi etichetate
- runner este permis să ruleze locuri de muncă netichetate
- configurați comportamentul alergător cu variabile
- strategie Git
- strategie submodule Git
- git checkout
- git steaguri curate
- git fetch steaguri suplimentare
- clonare superficială
- directoare personalizate construi
- manipularea concurenței
- căi
- etape de locuri de muncă încercări
- apeluri de sistem nu este disponibil pe GitLab.com runners partajate
- artefact și cache Setări
în GitLab CI/CD, runners rula codul definit în.gitlab-ci.yml
.Un alergător este un agent ușor, foarte scalabil, care preia o lucrare CI prin API-ul coordonator al GitLab CI/CD, execută lucrarea și trimite rezultatul înapoi la instanța GitLab.
alergătorii sunt creați de un administrator și sunt vizibili în interfața de Utilizare GitLab.Alergătorii pot fi specifici anumitor proiecte sau disponibili pentru toate proiectele.
această documentație este axată pe utilizarea alergătorilor în GitLab.Dacă trebuie să instalați și să configurați Gitlab Runner, consultați documentația Gitlab Runner.
- tipuri de alergători
- alergători partajate
- cum aleg alergătorii comuni joburi
- activați alergători partajate
- Disable shared runners
- alergători de grup
- crearea unui alergător de grup
- Vizualizați și gestionați alergătorii de grup
- întrerupeți sau eliminați un alergător de grup
- alergători specifici
- creați un alergător specific
- activați un alergător specific pentru un anumit proiect
- împiedicați activarea unui anumit alergător pentru alte proiecte
- ștergeți manual memoria cache a alergătorului
- setarea timeout-ului maxim al lucrării pentru un alergător
- fii atent cu informații sensibile
- împiedicați alergătorii să dezvăluie informații sensibile
- furci
- vectori de atac în alergători
- Resetați jetonul de înregistrare runner pentru un proiect
- determinați adresa IP a unui alergător
- determinați adresa IP a unui alergător partajat
- determinați adresa IP a unui alergător specific
- utilizați etichete pentru a limita numărul de joburi folosind alergătorul
- runner rulează numai locuri de muncă etichetate
- runner este permis să ruleze locuri de muncă neetichetate
- configurați comportamentul alergătorului cu variabile
- strategia Git
- strategia submodulului Git
- Git checkout
- git steaguri curate
- git aduce steaguri suplimentare
- clonarea superficială
- directoare personalizate construi
- manipularea concurenței
- căi imbricate
- etape de locuri de muncă încercări
- apelurile de sistem nu sunt disponibile pe GitLab.com alergători partajate
- artefact și cache Setări
tipuri de alergători
în interfața de utilizare GitLab există trei tipuri de alergători, în funcție de cine doriți să aveți acces:
- alergătorii Partajați sunt disponibili pentru toate grupurile și proiectele dintr-o instanță GitLab.
- alergătorii de grup sunt disponibili pentru toate proiectele și subgrupurile dintr-un grup.
- alergătorii specifici sunt asociați cu proiecte specifice.De obicei, alergătorii specifici sunt folosiți pentru un proiect la un moment dat.
alergători partajate
alergători partajate sunt disponibile pentru fiecare proiect într-o instanță GitLab.
utilizați alergători partajate atunci când aveți mai multe locuri de muncă cu cerințe similare. Mai degrabă decâtavând mai mulți alergători la ralanti pentru multe proiecte, puteți avea câțiva alergători care manipuleazăproiecte multiple.
dacă utilizați o instanță autogestionată a GitLab:
- administratorul dvs. poate instala și înregistra alergători partajați accesând setările proiectului> CI / CD, extinzând secțiunea alergători și făcând clic pe Afișați instrucțiunile de instalare a alergătorului.Aceste instrucțiuni sunt disponibile și în documentație.
- administratorul poate configura, de asemenea, un număr maxim de minute comune de conducte runner forefiecare grup.
dacă utilizați GitLab.com:
- puteți selecta dintr-o listă de alergători partajate pe care GitLab menține.
- alergătorii partajate consuma conductele minutesinclused cu contul dvs.
cum aleg alergătorii comuni joburi
alergătorii comuni procesează joburi folosind o coadă de utilizare corectă. Această coadă împiedică proiectele să creeze sute de locuri de muncă și să utilizeze toate resursele disponibile pentru alergători.
algoritmul cozii de utilizare corectă atribuie locuri de muncă pe baza proiectelor care au cel mai mic număr de locuri de muncă care rulează deja pe alergători partajate.
Exemplul 1
dacă aceste joburi sunt în coadă:
- Job 1 pentru proiectul 1
- Job 2 pentru proiectul 1
- Job 3 pentru proiectul 1
- Job 4 pentru proiectul 2
- Job 5 pentru proiectul 2
- Job 6 pentru proiectul 3
algoritmul de utilizare corectă atribuie Joburi în această ordine:
- Job 1 este ales mai întâi, deoarece are cel mai mic număr de joburi din proiecte fără joburi care rulează (adică toate proiectele).
- Locul de muncă 4 este următorul, deoarece 4 este acum cel mai mic număr de locuri de muncă din proiecte fără locuri de muncă în desfășurare (Proiectul 1 are un loc de muncă în desfășurare).
- Locul de muncă 6 este următorul, deoarece 6 este acum cel mai mic număr de locuri de muncă din proiectele fără locuri de muncă în desfășurare (proiectele 1 și 2 au locuri de muncă în desfășurare).
- Job 2 este următorul, deoarece, din proiectele cu cel mai mic număr de locuri de muncă care rulează (fiecare are 1), este cel mai mic număr de locuri de muncă.
- Job 5 este următorul, deoarece proiectul 1 are acum 2 locuri de muncă în desfășurare și Job 5 este cel mai mic număr de locuri de muncă rămase între proiectele 2 și 3.
- în cele din urmă este de locuri de muncă 3… pentru că este singurul loc de muncă stânga.
Exemplul 2
dacă aceste joburi sunt în coadă:
- Job 1 pentru proiectul 1
- Job 2 pentru proiectul 1
- Job 3 pentru proiectul 1
- Job 4 pentru proiectul 2
- Job 5 pentru proiectul 2
- Job 6 pentru proiectul 3
algoritmul de utilizare corectă atribuie Joburi în această ordine:
- jobul 1 este ales primul, deoarece are cel mai mic număr de joburi din proiecte fără joburi rulante (adică toate proiectele).
- terminăm treaba 1.
- Job 2 este următorul, deoarece, după ce a terminat Job 1, toate proiectele au 0 locuri de muncă care rulează din nou, iar 2 este cel mai mic număr de locuri de muncă disponibile.
- Locul de muncă 4 este următorul, deoarece cu Proiectul 1 care rulează un loc de muncă, 4 este cel mai mic număr din proiectele care nu rulează niciun loc de muncă (proiectele 2 și 3).
- terminăm treaba 4.
- Job 5 este următorul, deoarece după ce a terminat Job 4, Project 2 nu are joburi care rulează din nou.
- Job 6 este următorul, deoarece proiectul 3 este singurul proiect rămas fără locuri de muncă care rulează.
- în cele din urmă alegem Job 3… pentru că, din nou, este singurul loc de muncă rămas.
activați alergători partajate
pe GitLab.com, runners partajate sunt activate în toate proiectele bydefault.
în instanțele autogestionate ale GitLab, un administrator trebuie să le instaleze și să le înregistreze.
puteți activa, de asemenea, alergători partajate pentru proiecte individuale.
pentru a activa runners partajate:
- mergeți la setările proiectului> CI / CD și extindeți secțiunea Runners.
- selectați Activați alergători partajate pentru acest proiect.
puteți dezactiva runners partajate pentru proiecte individuale sau pentru grupuri.Trebuie să aveți permisiuni de proprietar pentru proiect sau grup.
pentru a dezactiva alergătorii partajați pentru un proiect:
- accesați setările proiectului> CI / CD și extindeți secțiunea alergători.
- în zona Shared runners, selectați Enable shared runners pentru acest proiect, astfel încât comutarea să fie estompată.
alergătorii Partajați sunt dezactivați automat pentru un proiect:
- Dacă setarea alergătorilor partajați pentru grupul părinte este dezactivată și
- dacă suprascrierea acestei setări nu este permisă la nivel de proiect.
pentru a dezactiva alergătorii partajați pentru un grup:
- accesați setările grupului> CI / CD și extindeți secțiunea alergători.
- în zona runners partajat, dezactivați comutarea activare runners partajat pentru acest grup.
- opțional, pentru a permite activarea alergătorilor partajați pentru proiecte sau subgrupuri individuale,faceți clic pe Permiteți proiecte și subgrupuri pentru a suprascrie setarea de grup.
alergători de grup
folosiți alergători de grup atunci când doriți ca toate proiectele dintr-un grup să aibă acces la un set de alergători.
alergătorii de grup procesează joburile folosind o coadă first in, first out (FIFO).
crearea unui alergător de grup
puteți crea un alergător de grup pentru instanța GitLab autogestionată sau pentru GitLab.com.trebuie să aveți permisiuni de proprietar pentru grup.
pentru a crea un alergător de grup:
- instalați Gitlab Runner.
- mergeți la grupul pentru care doriți să lucrați alergătorul.
- accesați Setări> CI / CD și extindeți secțiunea alergători.
- notați adresa URL și jetonul.
- înregistrați alergătorul.
Vizualizați și gestionați alergătorii de grup
introdus în GitLab 13.2.
puteți vizualiza și gestiona toți alergătorii pentru un grup, subgrupurile sale și proiectele.Puteți face acest lucru pentru instanța GitLab autogestionată sau pentru GitLab.com.trebuie să aveți permisiuni de proprietar pentru grup.
- mergeți la grupul în care doriți să vizualizați alergătorii.
- accesați Setări> CI / CD și extindeți secțiunea alergători.
-
sunt afișate următoarele câmpuri.
atribut descriere Tip una sau mai multe dintre următoarele stări: shared, group, specific, locked sau paused Runner token Token folosit pentru a identifica alergătorul și pe care alergătorul îl folosește pentru a comunica cu instanța GitLab descriere Descriere dată alergătorului când a fost creat Versiune Gitlab Runner versiunea adresa IP adresa IP a gazdei pe care este înregistrat alergătorul proiecte numărul de proiecte cărora le este atribuit alergătorul locuri de muncă total de locuri de muncă conduse de alergător Tag-uri Tag-uri asociate cu alergătorul ultimul contact Timestamp care indică când instanța GitLab a contactat ultima dată alergătorul
din această pagină, puteți edita, întrerupe și elimina alergătorii din grup, din subgrupurile sale și din proiecte.
întrerupeți sau eliminați un alergător de grup
Puteți întrerupe sau elimina un alergător de grup pentru instanța GitLab autogestionată sau pentru GitLab.com.trebuie să aveți permisiuni de proprietar pentru grup.
- mergeți la grupul pentru care doriți să eliminați sau să întrerupeți alergătorul.
- accesați Setări> CI / CD și extindeți secțiunea alergători.
- Faceți clic pe pauză sau eliminați runner.
- dacă întrerupeți un alergător de grup care este utilizat de mai multe proiecte, alergătorul se oprește pentru toate proiectele.
- din vizualizarea grup, nu puteți elimina un alergător care este atribuit mai multor proiecte.Trebuie să îl eliminați mai întâi din fiecare proiect.
- în dialogul de confirmare, faceți clic pe OK.
alergători specifici
utilizați alergători specifici atunci când doriți să utilizați alergători pentru proiecte specifice. De exemplu, atunci când aveți:
- locuri de muncă cu cerințe specifice, cum ar fi un loc de muncă deploy care necesită acreditări.
- proiecte cu multă activitate CI care pot beneficia de a fi separate de alți alergători.
puteți configura un alergător specific pentru a fi utilizat de mai multe proiecte. Runners specifice trebuie să fie activat pentru fiecare proiect în mod explicit.
alergătorii specifici procesează joburi folosind o coadă first in, first out (FIFO).
creați un alergător specific
puteți crea un alergător specific pentru instanța GitLab autogestionată sau pentru GitLab.com.trebuie să aveți permisiuni de proprietar pentru proiect.
pentru a crea un alergător specific:
- Install runner.
- accesați setările proiectului> CI / CD și extindeți secțiunea Runners.
- notați adresa URL și jetonul.
- înregistrați alergătorul.
activați un alergător specific pentru un anumit proiect
un alergător specific este disponibil în proiectul pentru care a fost creat. Un administrator poate activa un anumit alergător pentru a aplica la proiecte suplimentare.
- trebuie să aveți permisiuni de proprietar pentru proiect.
- alergătorul specific nu trebuie blocat.
pentru a activa sau dezactiva un anumit alergător pentru un proiect:
- accesați setările proiectului> CI / CD și extindeți secțiunea alergători.
- Faceți clic pe Activare pentru acest proiect sau dezactivare pentru acest proiect.
împiedicați activarea unui anumit alergător pentru alte proiecte
puteți configura un anumit alergător astfel încât să fie „blocat” și să nu poată fi activat pentru alte proiecte.Această setare poate fi activată la prima înregistrare a unui alergător, dar poate fi modificată și ulterior.
pentru a bloca sau debloca un alergător:
- accesați setările proiectului> CI / CD și extindeți secțiunea alergători.
- găsiți alergătorul pe care doriți să îl blocați sau să îl deblocați. Asigurați-vă că este activat.
- Faceți clic pe butonul Creion.
- verificați opțiunea Blocare la proiecte curente.
- Faceți clic pe Salvare modificări.
ștergeți manual memoria cache a alergătorului
citiți ștergerea memoriei cache.
setarea timeout-ului maxim al lucrării pentru un alergător
pentru fiecare alergător, puteți specifica un timeout maxim al lucrării. Acest timeout, dacă este mai mic decât timeout-ul definit de proiect, are prioritate.
această caracteristică poate fi utilizată pentru a împiedica alergătorul dvs. partajat să fie copleșit de un proiect care are locuri de muncă cu o perioadă lungă de timp (de exemplu, o săptămână).
când nu este configurat, alergători nu suprascrie timeout proiect.
pe GitLab.com, nu puteți suprascrie timeout de locuri de muncă pentru alergători partajate și trebuie să utilizeze timeout proiect definit.
pentru a seta timeout-ul maxim al lucrării:
- într-un proiect, accesați Setări > CI/CD > alergători.
- selectați alergătorul dvs. specific pentru a edita setările.
- introduceți o valoare sub timeout maxim de lucru.
- selectați Salvare modificări.
cum funcționează această caracteristică:
exemplu 1 – Timeout Runner mai mare decât timeout proiect
- setați timeout maxim de locuri de muncă pentru un alergător la 24 de ore
- setați Timeout CI/CD pentru un proiect la 2 ore
- începe un loc de muncă
- de locuri de muncă, în cazul în care rulează mai mult, ori după 2 ore
exemplu 2 – Timeout Runner configurare timeout de locuri de muncă de la un alergător
exemplu 3 – Runner timeout mai mic decât timeout proiect
- setați timeout maxim de locuri de muncă pentru un alergător la 30 de minute
- setați Timeout CI/CD pentru un proiect la 2 ore
- începe un loc de muncă
- de locuri de muncă, în cazul în care rulează mai mult, ori după 30 de minute
fii atent cu informații sensibile
cu unele executori alergător,dacă puteți rula un loc de muncă obțineți acces complet la sistemul de fișiere și, astfel,orice cod pe care îl rulează, precum și simbolul alergătorului. Cu runners partajate, acest lucru înseamnă că oricinecare rulează locuri de muncă pe alergător, poate accesa codul altcuiva care rulează pe therunner.
în plus, pentru că puteți obține acces la jetonul runner, este posibilpentru a crea o clonă a unui alergător și a trimite locuri de muncă false, de exemplu.
cele de mai sus sunt ușor evitate prin restricționarea utilizării runnerson-urilor publice mari instanțe GitLab, controlul accesului la instanța dvs. GitLab și utilizarea Executorilor de alergători mai siguri.
împiedicați alergătorii să dezvăluie informații sensibile
introduse în GitLab 10.0.
puteți proteja alergătorii astfel încât să nu dezvăluie informații sensibile.Atunci când un alergător este protejat, alergătorul alege locuri de muncă create pe ramuri protejate sau etichete protejate numai,și ignoră alte locuri de muncă.
pentru a proteja sau a proteja un alergător:
- accesați setările proiectului> CI / CD și extindeți secțiunea alergători.
- găsiți alergătorul pe care doriți să îl protejați sau să îl protejați. Asigurați-vă că este activat.
- Faceți clic pe butonul Creion.
- verificați opțiunea protejat.
- Faceți clic pe Salvare modificări.
furci
ori de câte ori un proiect este bifurcat, Copiază setările de locuri de muncă care relateto. Acest lucru înseamnă că, dacă ați partajat alergători înființat pentru un proiect șicineva forks acel proiect, alergători partajate servi locuri de muncă ale acestui proiect.
vectori de atac în alergători
menționat Pe scurt mai devreme, dar următoarele lucruri de alergători pot fi exploatate.Căutăm mereu contribuții care pot atenua aceste considerente de securitate.
Resetați jetonul de înregistrare runner pentru un proiect
dacă credeți că a fost dezvăluit un jeton de înregistrare pentru un proiect, ar trebui să îl resetați. Un jeton poate fi folosit pentru a înregistra un alt alergător pentru proiect. Această nouă rulare poate fi apoi utilizată pentru a obține valorile variabilelor secrete sau pentru a clona codul proiectului.
pentru a reseta tokenul:
- accesați setările proiectului> CI / CD.
- extindeți secțiunea Setări conducte generale.
- găsiți câmpul Formular Runner token și faceți clic pe butonul Reveal value.
- ștergeți valoarea și salvați formularul.
- după ce pagina este reîmprospătată, extindeți secțiunea Setări Alergătoriși verificați tokenul de înregistrare-ar trebui schimbat.
de acum înainte vechiul jeton nu mai este valabil și nu se înregistreazăorice alergători noi la proiect. Dacă utilizați orice instrumente pentru furnizarea și înregistrarea de noi alergători, jetoanele utilizate în aceste instrumente ar trebui actualizate pentru a reflecta valoarea noului jeton.
determinați adresa IP a unui alergător
introdus în GitLab 10.6.
poate fi util să cunoașteți adresa IP a unui alergător, astfel încât să puteți depana probleme cu acel alergător. GitLab stochează și afișează adresa IP vizualizândsursa cererilor HTTP pe care le face către GitLab atunci când sondează pentru locuri de muncă. Adresa IP este întotdeauna actualizată, deci dacă IP-ul alergătorului îl schimbăactualizări automate în GitLab.
adresa IP pentru alergători partajate și alergători specifice pot fi găsite în locuri diferite.
determinați adresa IP a unui alergător partajat
pentru a vizualiza adresa IP a unui alergător partajat, trebuie să aveți acces de administrator la instanța GitLab. Pentru a determina acest lucru:
- vizitați zona de administrare > Prezentare generală > alergători.
- căutați alergătorul în tabel și ar trebui să vedeți o coloană pentru adresa IP.
determinați adresa IP a unui alergător specific
pentru a putea găsi adresa IP a unui alergător pentru un anumit proiect,trebuie să aveți permisiuni de proprietar pentru proiect.
- accesați setările proiectului> CI / CD și extindeți secțiunea Runners.
- pe pagina de detalii ar trebui să vedeți un rând pentru adresa IP.
utilizați etichete pentru a limita numărul de joburi folosind alergătorul
trebuie să configurați un alergător pentru a putea rula toate tipurile diferite de joburi pe care le poate întâlni în proiectele pe care le-a distribuit. Acest lucru ar fiproblematic pentru cantități mari de proiecte, dacă nu ar fi etichete.
etichetele GitLab CI nu sunt aceleași cu etichetele Git. Etichetele GitLab CI sunt asociate cu alergătorii.Etichetele Git sunt asociate cu comiteri.
etichetând un alergător pentru tipurile de lucrări pe care le poate gestiona, puteți să vă asigurați că alergătorii împărțiți vor rula doar lucrările pe care sunt echipate să le ruleze.
de exemplu, la GitLab avem alergători etichetați curails
dacă conțin dependențele adecvate pentru a rula suitele de testare a șinelor.
când înregistrați un alergător, comportamentul său implicit este de a picktagged numai jobs.To modificați acest lucru, trebuie să aveți permisiuni de proprietar pentru proiect.
pentru a face un alergător alege locuri de muncă neetichetate:
- accesați setările proiectului> CI / CD și extindeți secțiunea Runners.
- găsiți alergătorul pe care doriți să-l alegeți și asigurați-vă că este activat.
- Faceți clic pe butonul Creion.
- verificați opțiunea Run untagged jobs.
- Faceți clic pe butonul Salvați modificările pentru ca modificările să aibă efect.
mai jos sunt câteva exemple de scenarii ale diferitelor variații.
runner rulează numai locuri de muncă etichetate
următoarele exemple ilustrează impactul potențial al alergătorului fiind setto rula numai locuri de muncă etichetate.
Exemplul 1:
- alergătorul este configurat să ruleze numai joburi etichetate și are eticheta
docker
. - un loc de muncă care are un
hello
tag-ul este executat și blocat.
Exemplul 2:
- alergătorul este configurat să ruleze numai joburi etichetate și are eticheta
docker
. - un loc de muncă care are un
docker
tag-ul este executat și a alerga.
Exemplul 3:
- alergătorul este configurat să ruleze numai joburi etichetate și are eticheta
docker
. - un loc de muncă care nu are tag-uri definite este executat și blocat.
runner este permis să ruleze locuri de muncă neetichetate
următoarele exemple ilustrează impactul potențial al alergător fiind setto rula etichetate și locuri de muncă neetichetate.
Exemplul 1:
- alergătorul este configurat să ruleze lucrări neetichetate și are eticheta
docker
. - o lucrare care nu are etichete definite este executată și executată.
- un al doilea job care are un
docker
tag definit este executat și executat.
Exemplul 2:
- alergătorul este configurat pentru a rula lucrări neetichetate și nu are etichete definite.
- o lucrare care nu are etichete definite este executată și executată.
- un al doilea loc de muncă care are un
docker
tag-ul definit este blocat.
configurați comportamentul alergătorului cu variabile
puteți utiliza variabile CI/CD pentru a configura comportamentul alergătorului gitlobal sau pentru lucrări individuale:
GIT_STRATEGY
GIT_SUBMODULE_STRATEGY
GIT_CHECKOUT
GIT_CLEAN_FLAGS
GIT_FETCH_EXTRA_FLAGS
-
GIT_DEPTH
(clonare superficială) -
GIT_CLONE_PATH
(directoare de construire personalizate)
de asemenea, puteți utiliza variabile pentru a configura de câte ori un alergătorîncearcă anumite etape de execuție a lucrării.
strategia Git
- introdus în GitLab 8.9 ca o caracteristică experimentală.
-
GIT_STRATEGY=none
necesită Gitlab Runner v1.7+.
puteți seta GIT_STRATEGY
folosit pentru a prelua conținutul depozitului, fie la nivel global, fie per-job în secțiunea variables
:
variables: GIT_STRATEGY: clone
există trei valori posibile: clone
fetch
și none
. Dacă sunt lăsate nespecificate,lucrările utilizează setarea conductei proiectului.
clone
este cea mai lentă opțiune. Clonează depozitul de la zero pentru fiecarelucru, asigurându-se că copia locală de lucru este întotdeauna curată.Dacă se găsește un arbore de lucru existent, acesta este eliminat înainte de clonare.
fetch
este mai rapid deoarece reutilizează copia de lucru locală (revenind laclone
dacă nu există). git clean
este folosit pentru a anula orice modificări făcute de lastjob, șigit fetch
este folosit pentru a prelua comiterile făcute după ultima lucrare rulată.
cu toate acestea,fetch
necesită acces la arborele de lucru anterior. Acest workswell atunci când se utilizeazăshell
saudocker
executor deoarece thesîncercați să păstrați worktrees și să încerce să le reutilizeze în mod implicit.
Acest lucru are limitări atunci când se utilizează Docker machine executor.
nu funcționează pentrukubernetes
executor,dar există o propunere caracteristică.kubernetes
executorul clonează întotdeauna într-un director temporar.
o strategie Git denone
reutilizează și copia de lucru locală, dar omite toate Gitoperațiile efectuate în mod normal de GitLab. Scripturile GitLab Runner pre-clone sunt,de asemenea, omise, dacă sunt prezente. Această strategie ar putea însemna că trebuie să adăugațifetch
șicheckout
comandăla.gitlab-ci.yml
script.
poate fi folosit pentru lucrări care funcționează exclusiv pe artefacte, cum ar fi o lucrare de implementare.Datele depozitului Git pot fi prezente, dar probabil că sunt depășite. Ar trebui doarse bazează pe fișierele aduse în copia de lucru locală din cache sau artefacte.
strategia submodulului Git
necesită Gitlab Runner v1.10+.
variabilaGIT_SUBMODULE_STRATEGY
este utilizată pentru a controla dacă / cum sunt incluse Gitsubmodules la preluarea codului înainte de o compilare. Puteți să le setațiglobal sau per-job în secțiunea variables
.
există trei valori posibile: none
normal
și recursive
:
-
none
înseamnă că submodulele sunt nu sunt incluse la preluarea projectcode. Aceasta este valoarea implicită, care se potrivește cu comportamentul pre-v1.10. -
normal
înseamnă că sunt incluse numai submodulele de nivel superior. Este echivalent cu:git submodule syncgit submodule update --init
-
recursive
înseamnă că sunt incluse toate submodulele (inclusiv submodulele submodulelor). Această caracteristică are nevoie de Git v1.8. 1 și mai târziu. Când utilizați aGitLab Runner cu un executor care nu se bazează pe Docker, asigurați-vă că versiunea Git îndeplinește această cerință. Este echivalent cu:git submodule sync --recursivegit submodule update --init --recursive
pentru ca această caracteristică să funcționeze corect, submodulele trebuie configurate(în .gitmodules
) cu:
- URL-ul HTTP al unui depozit accesibil publicului sau
- o cale relativă la un alt depozit pe același server GitLab. A se vedeadocumentația submodulelor git.
Git checkout
introdus în Gitlab Runner 9.3.
GIT_CHECKOUT
variabila poate fi utilizată atunci când GIT_STRATEGY
este setat fieclone
sau fetch
pentru a specifica dacă un git checkout
ar trebui să fie rulat. Dacă notspecified, implicit la true. Puteți să le setați global sau per-job în secțiuneavariables
.
dacă este setat la false
, alergătorul:
- când faceți
fetch
– actualizează depozitul și lasă copia de lucru pe revizuirea curentă, - când faceți
clone
– clonează depozitul și lasă copia de lucru pe ramura implicită.
dacăGIT_CHECKOUT
este setat latrue
, ambeleclone
șifetch
funcționează în același mod.Alergătorul verifică copia de lucru a unei revizuiri legate de conducta CI:
variables: GIT_STRATEGY: clone GIT_CHECKOUT: "false"script: - git checkout -B master origin/master - git merge $CI_COMMIT_SHA
git steaguri curate
introdus în Gitlab Runner 11.10
GIT_CLEAN_FLAGS
variabila este utilizată pentru a controla comportamentul implicit algit clean
după verificarea surselor. Puteți să o setați global sau per-job în secțiunea variables
.
GIT_CLEAN_FLAGS
acceptă toate opțiunile posibile ale comenziigit clean
.
git clean
este dezactivat dacăGIT_CHECKOUT: "false"
este specificat.
dacă GIT_CLEAN_FLAGS
este:
- nespecificat,
git clean
steaguri implicit la-ffdx
. - având în vedere valoarea
none
git clean
nu este executată.
de exemplu:
variables: GIT_CLEAN_FLAGS: -ffdx -e cache/script: - ls -al cache/
git aduce steaguri suplimentare
introdus în Gitlab Runner 13.1.
variabilaGIT_FETCH_EXTRA_FLAGS
este utilizată pentru a controla comportamentulgit fetch
. Puteți să o setați global sau per-job în secțiunea variables
.
GIT_FETCH_EXTRA_FLAGS
acceptă toate opțiunile comenziigit fetch
. Cu toate acestea,GIT_FETCH_EXTRA_FLAGS
steagurile sunt adăugate după steagurile implicite care nu pot fi modificate.
steagurile implicite sunt:
- GIT_DEPTH.
- lista de refspecs.
- o telecomandă numită
origin
.
dacăGIT_FETCH_EXTRA_FLAGS
este:
- nu este specificat,
git fetch
steaguri implicite la--prune --quiet
împreună cu steagurile implicite. - având în vedere valoarea
none
git fetch
se execută numai cu steagurile implicite.
de exemplu, steagurile implicite sunt --prune --quiet
, astfel încât să puteți face git fetch
mai detaliat prin suprascrierea acest lucru cu doar --prune
:
variables: GIT_FETCH_EXTRA_FLAGS: --prunescript: - ls -al cache/
configurația de mai sus are ca rezultatgit fetch
fiind numit în acest fel:
git fetch origin $REFSPECS --depth 50 --prune
unde$REFSPECS
este o valoare furnizată alergătorului intern de GitLab.
clonarea superficială
introdusă în GitLab 8.9 ca caracteristică experimentală.
puteți specifica adâncimea de preluare și clonare folosindGIT_DEPTH
GIT_DEPTH
face o clonă superficială a depozitului și poate accelera semnificativ cloning.It poate fi util pentru depozitele cu un număr mare de comiteri sau binare vechi, mari. Valoarea estetrecut la git fetch
și git clone
.
în GitLab 12.0 și mai târziu, proiectele nou create AU automat adefaultgit depth
valoarea50
.
dacă utilizați o adâncime de 1
și au o coadă de locuri de muncă sau retryjobs, locuri de muncă pot eșua.
git preluarea și clonarea se bazează pe un ref, cum ar fi un nume de ramură, astfel încât runnerscan ‘ t clona un anumit comite SHA. Dacă mai multe locuri de muncă sunt în coadă, sauîncercați un loc de muncă vechi, angajamentul de a fi testat trebuie să se încadreze în istoricul GIT care este clonat. Setarea unei valori prea mici pentru GIT_DEPTH
poate face imposibilă rularea acestor comiteri vechi șiunresolved reference
este afișată în jurnalele de lucru. Ar trebui apoi să reconsidere schimbarea GIT_DEPTH
la o valoare mai mare.
joburile care se bazează pegit describe
pot să nu funcționeze corect atunci cândGIT_DEPTH
sunt setate deoarece este prezentă doar o parte din istoricul Git.
pentru a prelua sau clona doar ultimele 3 comiteri:
variables: GIT_DEPTH: "3"
îl puteți seta global sau per-job în secțiuneavariables
.
directoare personalizate construi
introdus în Gitlab Runner 11.10.
în mod implicit, Gitlab Runner clonează depozitul într-un subpath unic al$CI_BUILDS_DIR
director. Cu toate acestea, proiectul dvs. poate necesita codul în directorul aspecific (proiecte Go, de exemplu). În acest caz, puteți specifica GIT_CLONE_PATH
variabilă pentru a spune alergătorului directorul pentru a clona therepository în:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/project-nametest: script: - pwd
GIT_CLONE_PATH
trebuie să fie întotdeauna în $CI_BUILDS_DIR
. Directorul setat în$CI_BUILDS_DIR
depinde de executor și de configurația alergătorilor.builds_dirsetting.
Acest lucru poate fi utilizat numai atunci cândcustom_build_dir
este activat în configurația therunner.Aceasta este configurația implicită pentrudocker
șikubernetes
executorii.
manipularea concurenței
un executor care utilizează o concurență mai mare decât1
ar putea duce la eșecuri. Este posibil ca mai multe joburi să funcționeze în același director dacă builds_dir
este partajat între joburi.
alergătorul nu încearcă să prevină această situație. Depinde de administratorși dezvoltatorii să respecte cerințele configurației runner.
pentru a evita acest scenariu, puteți utiliza o cale unică în $CI_BUILDS_DIR
, deoarece runnerexposes două variabile suplimentare care oferă un unic ID
de concurență:
-
$CI_CONCURRENT_ID
: ID unic pentru toate lucrările care rulează în executor. -
$CI_CONCURRENT_PROJECT_ID
: ID unic pentru toate lucrările care rulează în cadrul executorului și proiectului dat.
configurația cea mai stabilă, care ar trebui să funcționeze bine în orice scenariu și pe orice executoreste de a utiliza$CI_CONCURRENT_ID
înGIT_CLONE_PATH
. De exemplu:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/project-nametest: script: - pwd
$CI_CONCURRENT_PROJECT_ID
trebuie utilizat împreună cu $CI_PROJECT_PATH
ca $CI_PROJECT_PATH
oferă o cale de un depozit. Adică group/subgroup/project
. De exemplu:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/$CI_PROJECT_PATHtest: script: - pwd
căi imbricate
valoareaGIT_CLONE_PATH
este extins o dată și variableswithin cuiburi nu este acceptată.
de exemplu, definiți ambele variabile de mai jos în fișierul .gitlab-ci.yml
:
variables: GOPATH: $CI_BUILDS_DIR/go GIT_CLONE_PATH: $GOPATH/src/namespace/project
valoarea GIT_CLONE_PATH
este extinsă o dată în$CI_BUILDS_DIR/go/src/namespace/project
, și are ca rezultat failurebecause $CI_BUILDS_DIR
nu este extins.
etape de locuri de muncă încercări
introdus în GitLab, este nevoie de Gitlab Runner v1.9+.
puteți seta numărul de încercări pe care lucrarea în execuție încearcă să le execute următoarele etape:
variabilă | descriere |
---|---|
ARTIFACT_DOWNLOAD_ATTEMPTS
|
numărul de încercări de a descărca artefacte care rulează un loc de muncă |
EXECUTOR_JOB_SECTION_ATTEMPTS
|
în GitLab 12.10 și mai târziu, numărul de încercări de a rula o secțiune într-un loc de muncă după un No Such Container eroare (numai executorul Docker). |
GET_SOURCES_ATTEMPTS |
Numărul de încercări de a prelua surse care rulează un loc de muncă |
RESTORE_CACHE_ATTEMPTS |
Numărul de încercări de a restabili memoria cache care rulează un loc de muncă |
implicit este o singură încercare.
exemplu:
variables: GET_SOURCES_ATTEMPTS: 3
le puteți seta global sau per-job în secțiuneavariables
.
apelurile de sistem nu sunt disponibile pe GitLab.com alergători partajate
GitLab.com alergătorii împărțiți aleargă pe CoreOS. Aceasta înseamnă că nu puteți utiliza unele apeluri de sistem, cum ar fi getlogin
, din biblioteca standard C.
artefact și cache Setări
introdus în Gitlab Runner 13.9.
setările artefactului și cache controlează raportul de compresie al artefactelor și cache-urilor.Utilizați aceste setări pentru a specifica dimensiunea arhivei produse de o lucrare.
- într-o rețea lentă, încărcările ar putea fi mai rapide pentru arhivele mai mici.
- într-o rețea rapidă în care lățimea de bandă și stocarea nu reprezintă o problemă, încărcările ar putea fi mai rapide folosind cel mai rapid raport de compresie, în ciuda faptului că arhiva produsă este mai mare.
pentru paginile GitLab pentru a servihttp range requests, artifactsshould use theARTIFACT_COMPRESSION_LEVEL: fastest
Setare, ca numai arhive zip necomprimatesuport această caracteristică.
un contor poate fi, de asemenea, activat pentru a oferi rata de transfer pentru încărcări și descărcări.
variables: # output upload and download progress every 2 seconds TRANSFER_METER_FREQUENCY: "2s" # Use fast compression for artifacts, resulting in larger archives ARTIFACT_COMPRESSION_LEVEL: "fast" # Use no compression for caches CACHE_COMPRESSION_LEVEL: "fastest"
variabilă | descriere |
---|---|
TRANSFER_METER_FREQUENCY
|
specificați cât de des se imprimă rata de transfer a contorului. Acesta poate fi setat la o durată (de exemplu, 1s sau 1m30s ). O durată de 0 dezactivează contorul (implicit). Când este setată o valoare, conducta afișează un contor de progres pentru încărcări și descărcări de artefacte și cache. |
ARTIFACT_COMPRESSION_LEVEL |
pentru a regla raportul de compresie, setați la fastest fast default slow , sau slowest . Această setare funcționează numai cu arhivatorul Fastzip, deci trebuie să fie activată și caracteristica GitLab Runner FF_USE_FASTZIP . |
CACHE_COMPRESSION_LEVEL |
To adjust compression ratio, set to fastest fast default slow , or slowest . This setting works with the Fastzip archiver only, so the GitLab Runner feature flag FF_USE_FASTZIP must also be enabled. |