Konfigurowanie biegaczy w GitLab
- typy biegaczy
- Współdzieleni biegacze
- Jak współdzieleni biegacze wybierają zadania
- Włącz współdzielonych biegaczy
- Wyłącz współdzielonych biegaczy
- Utwórz biegacza grupowego
- Wyświetlanie i zarządzanie biegaczami grupowymi
- pauza lub Usuń grupę biegaczy
- Współdzieleni biegacze
- określonych biegaczy
- Utwórz określonego biegacza
- włącz określonego biegacza dla określonego projektu
- Zapobiegaj włączaniu określonego biegacza dla innych projektów
- Zapobiegaj ujawnianiu poufnych informacji
- widły
- wektory ataku w biegaczach
- Zresetuj token rejestracji biegacza dla projektu
- Określ adres IP współdzielonego biegacza
- określ adres IP konkretnego biegacza
- biegacz uruchamia tylko zadania oznaczone
- runner może uruchamiać nieoznaczone zadania
- Git strategy
- Git submodule strategy
- Git checkout
- Git clean flags
- Git fetch extra flags
- płytkie klonowanie
- niestandardowe katalogi budowania
- obsługa współbieżności
- ścieżki zagnieżdżone
- próby etapów zadań
w GitLab CI/CD biegacze uruchamiają kod zdefiniowany w.gitlab-ci.yml
.Runner jest lekkim, wysoce skalowalnym agentem, który odbiera zadanie CI za pośrednictwem API koordynatora GitLab Ci / CD, uruchamia zadanie i wysyła wynik z powrotem do instancji GitLab.
biegacze są tworzone przez administratora i są widoczne w interfejsie GitLab.Biegacze mogą być specyficzne dla niektórych projektów lub dostępne dla wszystkich projektów.
ta dokumentacja skupia się na używaniu runnerów w GitLab.Jeśli chcesz zainstalować i skonfigurować GitLab Runner, zapoznaj się z dokumentacją GitLab Runner.
- typy biegaczy
- współdzielone biegacze
- jak współdzieleni biegacze wybierają zadania
- Włącz współdzielonych biegaczy
- Wyłącz współdzielone biegacze
- biegacze grupowi
- Utwórz grupę runner
- Wyświetlanie i zarządzanie biegaczami grup
- Wstrzymaj lub Usuń grupę runner
- konkretni biegacze
- Utwórz konkretny biegacz
- Włącz konkretny biegacz dla konkretnego projektu
- zapobieganie włączaniu określonego biegacza dla innych projektów
- ręcznie Wyczyść pamięć podręczną runnera
- ustaw maksymalny Limit czasu pracy dla biegacza
- uważaj na poufne informacje
- Zapobiegaj ujawnianiu poufnych informacji
- widełki
- wektory ataku u biegaczy
- Zresetuj token rejestracyjny dla projektu
- Określ adres IP biegacza
- Określ adres IP współdzielonego biegacza
- Określ adres IP konkretnego biegacza
- użyj tagów, aby ograniczyć liczbę zadań używając biegacza
- biegacz uruchamia tylko oznaczone zadania
- biegacz może uruchamiać zadania nieoznakowane
- Konfiguracja zachowania runnera za pomocą zmiennych
- strategia Gita
- Git submodule strategy
- Git checkout
- Git clean flags
- Git pobiera dodatkowe flagi
- płytkie klonowanie
- własne katalogi budowania
- Obsługa współbieżności
- ścieżki zagnieżdżone
- job stages próby
- wywołania systemowe niedostępne na GitLab.com wspólne bieganie
- Ustawienia artefaktu i pamięci podręcznej
typy biegaczy
w interfejsie GitLab istnieją trzy typy biegaczy, w zależności od tego, do kogo chcesz mieć dostęp:
- współdzielone biegacze są dostępne dla wszystkich grup i projektów w instancji GitLab.
- biegacze grupowi są dostępni dla wszystkich projektów i podgrup w grupie.
- konkretni biegacze są powiązani z konkretnymi projektami.Zazwyczaj konkretne biegacze są używane do jednego projektu na raz.
współdzielone biegacze
współdzielone biegacze są dostępne dla każdego projektu w instancji GitLab.
użyj współdzielonych biegaczy, gdy masz wiele zadań o podobnych wymaganiach. Zamiast mieć wielu biegaczy na biegu jałowym dla wielu projektów, możesz mieć kilku biegaczy, którzy obsługują wiele projektów.
Jeśli używasz samodzielnie zarządzanej instancji GitLab:
- Twój administrator może zainstalować i zarejestrować udostępnione biegacze, przechodząc do ustawień Twojego projektu> CI / CD,rozwijając sekcję biegacze i klikając Pokaż instrukcje instalacji biegacza.Instrukcje te są również dostępne w dokumentacji.
- administrator może również skonfigurować maksymalną liczbę współdzielonych minut rurociągu dla każdej grupy.
Jeśli używasz GitLab.com:
- możesz wybrać z listy współdzielonych biegaczy, które utrzymuje GitLab.
- współdzieleni biegacze zużywają minuty dołączone do Twojego konta.
jak współdzieleni biegacze wybierają zadania
Współdzieleni biegacze przetwarzają zadania przy użyciu kolejki fair usage. Ta Kolejka zapobiega tworzeniu setek zadań i wykorzystywaniu wszystkich dostępnych zasobów runnera.
algorytm kolejki fair usage przypisuje zadania na podstawie projektów, które mają największą liczbę zadań już uruchomionych na współdzielonych biegaczach.
przykład 1
Jeśli te zadania znajdują się w kolejce:
- Zadanie 1 dla projektu 1
- Zadanie 2 dla projektu 1
- Zadanie 3 dla projektu 1
- Zadanie 4 dla projektu 2
- zadanie 5 dla projektu 2
- Zadanie 6 dla projektu 3
algorytm sprawiedliwego użytkowania przypisuje zadania w tej kolejności:
- Zadanie 1 jest wybierane jako pierwsze, ponieważ ma najniższy numer zadania z projektów bez uruchomionych zadań (czyli wszystkich projektów).
- zadanie 4 jest następne, ponieważ 4 jest teraz najniższym numerem zadania z projektów bez uruchomionych zadań (Projekt 1 ma uruchomione zadanie).
- Zadanie 6 jest następne, ponieważ 6 jest teraz najniższym numerem zadania z projektów bez uruchomionych zadań (projekty 1 i 2 mają uruchomione zadania).
- Zadanie 2 jest następne, ponieważ z projektów o najniższej liczbie uruchomionych zadań (każdy ma 1), jest to najniższy numer zadania.
- zadanie 5 jest następne, ponieważ projekt 1 ma teraz uruchomione 2 zadania, a zadanie 5 jest najniższym pozostałym numerem zadania między projektami 2 i 3.
- wreszcie jest praca 3 … bo to jedyna praca jaka została.
przykład 2
Jeśli te zadania znajdują się w kolejce:
- Zadanie 1 dla projektu 1
- Zadanie 2 dla projektu 1
- Zadanie 3 dla projektu 1
- Zadanie 4 dla projektu 2
- zadanie 5 dla projektu 2
- Zadanie 6 dla projektu 3
algorytm fair usage przypisuje zadania w następującej kolejności:
- Zadanie 1 jest wybierane jako pierwsze, ponieważ ma najniższy numer zadania z projektów bez uruchomionych zadań (czyli wszystkich projektów).
- kończymy Zadanie 1.
- Zadanie 2 jest następne, ponieważ po zakończeniu zadania 1 wszystkie projekty mają 0 zadań uruchomionych ponownie, a 2 jest najniższym dostępnym numerem zadania.
- zadanie 4 jest następne, ponieważ przy uruchomieniu zadania w projekcie 1, 4 jest najniższą liczbą z projektów bez Zadań (projekty 2 i 3).
- kończymy Zadanie 4.
- zadanie 5 jest następne, ponieważ po zakończeniu zadania 4, Projekt 2 nie ma ponownie uruchomionych zadań.
- Zadanie 6 jest następne, ponieważ projekt 3 jest jedynym projektem, który nie ma uruchomionych zadań.
- na koniec wybieramy Zadanie 3 … bo znowu jest to jedyne zadanie jakie zostało.
Włącz współdzielonych biegaczy
On GitLab.com, współdzielone biegacze są włączone we wszystkich projektach przezefault.
w instancjach samodzielnie zarządzanych GitLab, administrator musi je zainstalować i zarejestrować.
Możesz również włączyć współdzielonych biegaczy dla poszczególnych projektów.
aby włączyć współdzielone biegacze:
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję biegacze.
- wybierz Włącz współdzielone biegacze dla tego projektu.
Wyłącz współdzielone biegacze
możesz wyłączyć współdzielone biegacze dla poszczególnych projektów lub dla grup.Musisz mieć uprawnienia właściciela dla projektu lub grupy.
aby wyłączyć współdzielone biegacze dla projektu:
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję biegacze.
- w obszarze współdzielone biegacze wybierz opcję Włącz współdzielone biegacze dla tego projektu, aby przełącznik był wyszarzony.
współdzielone biegacze są automatycznie wyłączone dla projektu:
- Jeśli ustawienie współdzielone biegacze dla grupy nadrzędnej jest wyłączone, oraz
- Jeśli nadpisanie tego ustawienia nie jest dozwolone na poziomie projektu.
aby wyłączyć współdzielone biegacze dla grupy:
- przejdź do ustawień grupy> CI / CD i rozwiń sekcję biegacze.
- w obszarze współdzielone biegacze wyłącz przełącznik Włącz współdzielone biegacze dla tej grupy.
- Opcjonalnie,aby umożliwić współdzielenie biegaczy dla poszczególnych projektów lub podgrup, kliknij Zezwól na projekty i podgrupy, aby zastąpić ustawienie grupy.
biegacze grupowi
użyj biegaczy grupowych, gdy chcesz, aby wszystkie projekty w grupie miały dostęp do zestawu biegaczy.
biegacze grupowi przetwarzają zadania za pomocą kolejki first in, first out (FIFO).
Utwórz grupę runner
możesz utworzyć grupę runner Dla samodzielnie zarządzanej instancji GitLab lub dla GitLab. com. musisz mieć uprawnienia właściciela dla grupy.
aby utworzyć grupę runner:
- zainstaluj GitLab Runner.
- przejdź do grupy, dla której chcesz sprawić, by biegacz pracował.
- przejdź do ustawień > CI / CD i rozwiń sekcję Runners.
- zwróć uwagę na URL i token.
- Zarejestruj biegacza.
Wyświetlanie i zarządzanie biegaczami grup
wprowadzone w GitLab 13.2.
Możesz przeglądać i zarządzać wszystkimi biegaczami dla grupy, jej podgrup i projektów.Możesz to zrobić dla własnej instancji GitLab lub dla GitLab. com. musisz mieć uprawnienia właściciela dla grupy.
- przejdź do grupy, w której chcesz zobaczyć biegaczy.
- przejdź do ustawień > CI / CD i rozwiń sekcję Runners.
-
wyświetlane są następujące pola.
atrybut opis Typ jeden lub więcej z następujących stanów: Token biegacza Token używany do identyfikacji biegacza i używany do komunikacji z instancją GitLab opis opis podany biegaczowi podczas jego tworzenia Wersja GitLab Runner wersja adres IP adres IP hosta, na którym zarejestrowany jest biegacz projekty liczba projektów, do których biegacz jest przypisany zadania suma zadań prowadzonych przez biegacza Tagi Tagi powiązane z runnerem ostatni kontakt znacznik czasu wskazujący, kiedy instancja GitLab ostatni kontaktowała się z runnerem
na tej stronie możesz edytować, wstrzymywać i usuwać biegaczy z grupy, jej podgrup i projektów.
Wstrzymaj lub Usuń grupę runner
możesz wstrzymać lub usunąć grupę runner Dla samodzielnie zarządzanej instancji GitLab lub dla GitLab. com. musisz mieć uprawnienia właściciela dla grupy.
- przejdź do grupy, dla której chcesz usunąć lub wstrzymać biegacza.
- przejdź do ustawień > CI / CD i rozwiń sekcję Runners.
- kliknij Wstrzymaj lub Usuń biegacza.
- Jeśli zatrzymasz biegacza grupowego używanego przez wiele projektów, biegacz zatrzyma się dla wszystkich projektów.
- z widoku grupy nie można usunąć biegacza przypisanego do więcej niż jednego projektu.Musisz najpierw usunąć go z każdego projektu.
- w oknie potwierdzenia kliknij OK.
konkretni biegacze
używaj konkretnych biegaczy, gdy chcesz używać biegaczy do konkretnych projektów. Na przykład, gdy masz:
- zadania o określonych wymaganiach, takie jak zadanie wdrażania wymagające poświadczeń.
- projekty z dużą aktywnością CI, które mogą korzystać z bycia oddzielonym od innych biegaczy.
możesz ustawić konkretny biegacz, który będzie używany w wielu projektach. Konkretne uruchamianie musi być jawnie włączone dla każdego projektu.
konkretni biegacze przetwarzają zadania za pomocą kolejki first in, first out (FIFO).
Utwórz konkretny biegacz
możesz utworzyć konkretny biegacz dla samodzielnie zarządzanej instancji GitLab lub dla GitLab. com. musisz mieć uprawnienia właściciela dla projektu.
aby utworzyć konkretny biegacz:
- zainstaluj biegacza.
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję Runners.
- zwróć uwagę na URL i token.
- Zarejestruj biegacza.
Włącz konkretny biegacz dla konkretnego projektu
konkretny biegacz jest dostępny w projekcie, dla którego został stworzony. Administrator może zastosować konkretny biegacz do dodatkowych projektów.
- musisz mieć uprawnienia właściciela projektu.
- konkretny biegacz nie może być zablokowany.
aby włączyć lub wyłączyć konkretny biegacz dla projektu:
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję biegacze.
- Kliknij Włącz dla tego projektu lub wyłącz dla tego projektu.
zapobieganie włączaniu określonego biegacza dla innych projektów
możesz skonfigurować określony biegacz tak, aby był „zablokowany” i nie mógł być włączony dla innych projektów.To ustawienie można włączyć podczas pierwszej rejestracji biegacza,ale można je również zmienić później.
aby zablokować lub odblokować biegacza:
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję biegaczy.
- Znajdź biegacza, którego chcesz zablokować lub odblokować. Upewnij się, że jest włączona.
- kliknij przycisk ołówek.
- zaznacz opcję Zablokuj bieżące projekty.
- kliknij Zapisz zmiany.
ręcznie Wyczyść pamięć podręczną runnera
przeczytaj czyszczenie pamięci podręcznej.
ustaw maksymalny Limit czasu pracy dla biegacza
dla każdego biegacza możesz określić maksymalny Limit czasu pracy. Ten limit czasu, jeśli jest mniejszy niż limit czasu zdefiniowany przez projekt, ma pierwszeństwo.
Ta funkcja może być użyta, aby zapobiec przytłaczaniu współdzielonego programu przez projekt, który ma zadania z długim czasem oczekiwania (na przykład jeden tydzień).
gdy nie jest skonfigurowany, biegacze nie nadpisują limitu czasu projektu.
na GitLab.com, nie możesz nadpisać limitu czasu zadania dla współdzielonych biegaczy i musisz użyć limitu czasu zdefiniowanego przez projekt.
aby ustawić maksymalny Limit Czasu Pracy:
- w projekcie przejdź do ustawień> CI/CD>.
- Wybierz swojego biegacza, aby edytować ustawienia.
- Wprowadź wartość pod Maximum job timeout.
- Wybierz Zapisz zmiany.
jak działa ta funkcja:
przykład 1 – limit czasu dla biegacza większy niż limit czasu projektu
- Ustawiasz maksymalny Limit czasu dla biegacza na 24 godziny
- Ustawiasz limit czasu CI/CD dla projektu na 2 godziny
- uruchamiasz zadanie
- zadanie, jeśli działa dłużej, wygasa po 2 godzinach
przykład 2 – limit czasu dla biegacza nie jest skonfigurowany
- usuwasz maksimum konfiguracja limitu czasu pracy z runnera
- ustawiasz limit czasu CI/CD dla projektu na 2 godziny
- uruchamiasz zadanie
- zadanie, jeśli działa dłużej, wygasa po 2 godzinach
przykład 3 – Runner
- ustawiasz maksymalny Limit czasu zadania dla biegacza na 30 minut
- Ustawiasz limit czasu CI/CD dla projektu na 2 godziny
- rozpoczynasz zadanie
- zadanie, jeśli działa dłużej, wygasa po 30 minutach
uważaj na poufne informacje
z niektórymi wykonawcami biegacza,jeśli możesz uruchomić zadanie na biegaczu, możesz uzyskaj pełny dostęp do systemu plików,a tym samym dowolnego kodu, który uruchamia, a także tokena biegacza. W przypadku współdzielonych biegaczy oznacza to, że każdy, kto wykonuje zadania na biegaczu, może uzyskać dostęp do kodu każdego innego, który działa na biegaczu.
Ponadto, ponieważ możesz uzyskać dostęp do tokena biegacza, możliwe jest na przykład utworzenie klonu biegacza i przesłanie fałszywych zadań.
powyższego można łatwo uniknąć, ograniczając użycie współdzielonych uruchomień w dużych publicznych instancjach GitLab,kontrolując dostęp do instancji GitLab i używając bardziej bezpiecznych wykonawców runnera.
Zapobiegaj ujawnianiu poufnych informacji
wprowadzonych w GitLab 10.0.
możesz chronić biegaczy, aby nie ujawniali poufnych informacji.Gdy biegacz jest chroniony, wybiera zadania utworzone tylko w zabezpieczonych gałęziach lub chronionych tagach i ignoruje inne zadania.
aby chronić lub odblokować biegacza:
- przejdź do ustawień projektu> CI / CD i rozwiń sekcję biegaczy.
- Znajdź biegacza, którego chcesz chronić lub usunąć. Upewnij się, że jest włączona.
- kliknij przycisk ołówek.
- zaznacz opcję chronioną.
- kliknij Zapisz zmiany.
widełki
za każdym razem, gdy projekt jest rozwidlony, kopiuje ustawienia zadań, które go dotyczą. Oznacza to, że jeśli masz współdzielonych biegaczy skonfigurowanych do projektu i kilka widelców tego projektu, współdzieleni biegacze służą zadaniom tego projektu.
wektory ataku u biegaczy
wspomniano krótko wcześniej, ale można wykorzystać następujące rzeczy biegaczy.Zawsze szukamy wkładu, który może złagodzić te względy bezpieczeństwa.
Zresetuj token rejestracyjny dla projektu
Jeśli uważasz, że token rejestracyjny dla projektu został ujawniony, powinieneś go ustawić. Token może być użyty do zarejestrowania innego uczestnika projektu. Ten nowy runnermay może być użyty do uzyskania wartości zmiennych tajnych lub do klonowania kodu projektu.
aby zresetować token:
- przejdź do ustawień projektu > CI / CD.
- rozwiń sekcję Ogólne ustawienia potoków.
- znajdź pole formularza Tokena biegacza i kliknij przycisk Pokaż wartość.
- Usuń wartość i zapisz formularz.
- po odświeżeniu strony rozwiń sekcję Ustawienia biegaczy i sprawdź token rejestracji-powinien zostać zmieniony.
od teraz stary token nie jest już ważny i nie rejestruje nowych uczestników projektu. Jeśli używasz narzędzi do dostarczania i rejestrowania nowych biegaczy, tokeny używane w tych narzędziach powinny zostać zaktualizowane, aby odzwierciedlić wartość nowego tokena.
Określ adres IP biegacza
wprowadzonego w GitLab 10.6.
przydatne może być poznanie adresu IP biegacza, aby móc rozwiązywać problemy z tym biegaczem. GitLab przechowuje i wyświetla adres IP, przeglądając źródło żądań HTTP, które wysyła do GitLab podczas wyszukiwania zadań. Adres IP jest zawsze aktualizowany, więc jeśli IP runnera zmieni się automatycznie aktualizuje się w GitLab.
adres IP współdzielonych biegaczy i konkretnych biegaczy można znaleźć w innych miejscach.
Określ adres IP współdzielonego biegacza
aby wyświetlić adres IP współdzielonego biegacza, musisz mieć dostęp administratora do instancji GitLab. Aby to ustalić:
- odwiedź Stronę administratora> przegląd>
- poszukaj biegacza w tabeli i powinieneś zobaczyć kolumnę adresu IP.
Określ adres IP konkretnego biegacza
aby znaleźć adres IP biegacza dla określonego projektu,musisz mieć uprawnienia właściciela dla projektu.
- przejdź do ustawień projektu > CI / CD i rozwiń sekcję Runners.
- na stronie szczegółów powinieneś zobaczyć wiersz adresu IP.
użyj tagów, aby ograniczyć liczbę zadań używając biegacza
musisz skonfigurować biegacza, aby mógł uruchamiać wszystkie rodzaje zadań, które może napotkać w projektach, nad którymi jest współdzielony. Byłoby to problematyczne dla dużych ilości projektów, gdyby nie znaczniki.
Tagi Ci GitLab to nie to samo co tagi Git. Tagi ci GitLab są powiązane z runners.Tagi Git są powiązane z commitami.
oznaczając biegacza dla rodzajów zadań, które może obsłużyć, możesz sprawić, że biegacze będą wykonywać tylko te zadania, do których są przygotowani.
na przykład na GitLab mamy biegaczy oznaczonych tagami rails
, jeśli zawierają odpowiednie zależności do uruchamiania pakietów testowych Rails.
Kiedy rejestrujesz biegacza, jego domyślnym zachowaniem jest tylko wybieranie jobs.To zmień to, musisz mieć uprawnienia właściciela dla projektu.
aby biegacz wybierał nieoznakowane zadania:
- przejdź do ustawień projektu > CI / CD i rozwiń sekcję Runners.
- Znajdź biegacza, którego chcesz wybrać i upewnij się, że jest włączony.
- kliknij przycisk ołówek.
- zaznacz opcję Uruchom nieoznakowane zadania.
- kliknij przycisk Zapisz zmiany, aby zmiany odniosły skutek.
poniżej kilka przykładowych scenariuszy różnych odmian.
biegacz uruchamia tylko oznaczone zadania
poniższe przykłady ilustrują potencjalny wpływ biegacza na uruchamianie tylko oznakowanych zadań.
przykład 1:
- biegacz jest skonfigurowany do uruchamiania tylko oznaczonych zadań i ma znacznik
docker
. - zadanie, które ma
hello
jest wykonywane i blokowane.
przykład 2:
- biegacz jest skonfigurowany do uruchamiania tylko oznaczonych zadań i ma znacznik
docker
. - zadanie, które ma
docker
jest wykonywane i uruchamiane.
przykład 3:
- biegacz jest skonfigurowany do uruchamiania tylko oznaczonych zadań i ma
docker
tag. - zadanie, które nie ma zdefiniowanych tagów jest wykonywane i blokowane.
biegacz może uruchamiać zadania nieoznakowane
poniższe przykłady ilustrują potencjalny wpływ biegacza na uruchamianie zadań oznaczonych i nieoznakowanych.
przykład 1:
- biegacz jest skonfigurowany do uruchamiania zadań nieoznaczonych i posiada znacznik
docker
. - zadanie, które nie ma zdefiniowanych tagów jest wykonywane i uruchamiane.
- wykonuje się i uruchamia drugie zadanie, które ma zdefiniowany znacznik
docker
.
przykład 2:
- biegacz jest skonfigurowany do uruchamiania zadań nieoznaczonych i nie ma zdefiniowanych tagów.
- zadanie, które nie ma zdefiniowanych tagów jest wykonywane i uruchamiane.
- drugie zadanie, które ma zdefiniowany znacznik
docker
jest zablokowane.
Konfiguracja zachowania runnera za pomocą zmiennych
możesz użyć zmiennych CI/CD do skonfigurowania behawiorglobalnie runnera Git lub dla poszczególnych zadań:
GIT_STRATEGY
GIT_SUBMODULE_STRATEGY
GIT_CHECKOUT
GIT_CLEAN_FLAGS
GIT_FETCH_EXTRA_FLAGS
-
GIT_DEPTH
(płytkie klonowanie) -
GIT_CLONE_PATH
(niestandardowe katalogi kompilacji)
Możesz również użyć zmiennych, aby skonfigurować, ile razy runnerat usuwa niektóre etapy zadania egzekucja.
strategia Gita
- wprowadzona w GitLab 8.9 jako funkcja eksperymentalna.
-
GIT_STRATEGY=none
wymaga GitLab Runner v1.7+.
Możesz ustawićGIT_STRATEGY
używany do pobierania zawartości repozytorium, eitherglobally lub per-job w sekcjivariables
:
variables: GIT_STRATEGY: clone
zależności od tego, która z tych wartości jest większa, można wybrać jedną z poniższych wartości: Jeśli pozostawiono nieokreślone,zadania używają ustawienia potoku projektu.
clone
jest najwolniejszą opcją. Klonuje repozytorium od zera dla każdej pracy, zapewniając, że lokalna kopia robocza jest zawsze nieskazitelna.Jeśli zostanie znaleziony istniejący drzewo robocze, zostanie ono usunięte przed klonowaniem.
fetch
jest szybszy, ponieważ ponownie używa lokalnej kopii roboczej (wraca doclone
, jeśli nie istnieje). git clean
służy do cofania wszelkich zmian wprowadzonych przez ostatnie zadanie, agit fetch
służy do pobierania zmian dokonanych po ostatnim uruchomionym zadaniu.
jednakfetch
wymaga dostępu do poprzedniego drzewa roboczego. To działa, gdy używaszshell
lubdocker
executor, ponieważ pozwala zachować worktrees i spróbować je ponownie użyć domyślnie.
ma to ograniczenia podczas używania executora Maszyny dokującej.
nie działa dlakubernetes
executora,ale istnieje propozycja funkcji.kubernetes
executor zawsze klonuje się do katalogu tymczasowego.
Strategia Gita none
również ponownie używa lokalnej kopii roboczej, ale pomija wszystkie operacje wykonywane normalnie przez GitLab. Skrypty GitLab Runner pre-clone również są pomijane, jeśli występują. Ta strategia może oznaczać, że musisz dodać poleceniafetch
Icheckout
do twojego skryptu.gitlab-ci.yml
.
może być używany do zadań, które działają wyłącznie na artefaktach, takich jak zadanie wdrożeniowe.Dane repozytorium Git mogą być obecne, ale prawdopodobnie są nieaktualne. Należy stosować tylko pliki przeniesione do lokalnej kopii roboczej z pamięci podręcznej lub artefaktów.
Git submodule strategy
wymaga GitLab Runner v1.10+.
zmienna GIT_SUBMODULE_STRATEGY
służy do kontrolowania, czy / w jaki sposób Moduły Gitsubmodules są dołączane podczas pobierania kodu przed kompilacją. Możesz ustawić jeglobalnie lub dla każdego zadania w sekcjivariables
.
istnieją trzy możliwe wartości:none
normal
Irecursive
:
-
none
oznacza, że podmoduły nie są uwzględniane podczas pobierania kodu projektu. Jest to wartość domyślna, która pasuje do zachowania sprzed wersji 1.10. -
normal
oznacza, że uwzględniono tylko podmoduły najwyższego poziomu. Jest równoważny z:git submodule syncgit submodule update --init
recursive
oznacza, że wszystkie podmoduły (w tym podmoduły podmodułów)są uwzględnione. Ta funkcja wymaga Git v1.8.1 i nowszych. Podczas używania Agitlab Runner z executorem nie opartym na Dockerze, upewnij się, że wersja Git spełnia to wymaganie. Jest odpowiednikiem:
git submodule sync --recursivegit submodule update --init --recursive
aby ta funkcja działała poprawnie, podmoduły muszą być skonfigurowane(w.gitmodules
) za pomocą:
- adres URL http publicznie dostępnego repozytorium lub
- ścieżka względna do innego repozytorium na tym samym serwerze GitLab. Zobacz dokumentację podmodułów git.
Git checkout
wprowadzony w GitLab Runner 9.3.
zmiennaGIT_CHECKOUT
może być używana, gdyGIT_STRATEGY
jest ustawiona naclone
lubfetch
, aby określić, czygit checkout
należy uruchomić. Jeśli nie jest określony, domyślnie ma wartość true. Możesz ustawić je globalnie lub dla każdego zadania w sekcjivariables
.
jeśli jest ustawione na false
, runner:
- podczas robienia
fetch
– aktualizuje repozytorium i pozostawia kopię roboczą aktualnej wersji, - podczas robienia
clone
– klonuje repozytorium i pozostawia kopię roboczą w gałęzi default.
JeśliGIT_CHECKOUT
jest ustawione natrue
, obaclone
Ifetch
działają w ten sam sposób.Runner sprawdza kopię roboczą rewizji związanej z rurociągiem CI:
variables: GIT_STRATEGY: clone GIT_CHECKOUT: "false"script: - git checkout -B master origin/master - git merge $CI_COMMIT_SHA
Git clean flags
wprowadzona w GitLab Runner 11.10
zmienna GIT_CLEAN_FLAGS
służy do kontrolowania domyślnego zachowaniagit clean
po sprawdzeniu źródeł. Możesz ustawić go globalnie lub dla każdego zadania w sekcjivariables
.
GIT_CLEAN_FLAGS
akceptuje wszystkie możliwe opcje poleceniagit clean
.
git clean
jest wyłączony, jeśli podanoGIT_CHECKOUT: "false"
.
Jeśli GIT_CLEAN_FLAGS
jest:
- nie określono,
git clean
flagi domyślnie-ffdx
. - podana wartość
none
git clean
nie jest wykonywana.
na przykład:
variables: GIT_CLEAN_FLAGS: -ffdx -e cache/script: - ls -al cache/
Git pobiera dodatkowe flagi
wprowadzone w GitLab Runner 13.1.
zmiennaGIT_FETCH_EXTRA_FLAGS
służy do kontrolowania zachowaniagit fetch
. Możesz ustawić go globalnie lub dla każdego zadania w sekcjivariables
.
GIT_FETCH_EXTRA_FLAGS
akceptuje wszystkie opcje poleceniagit fetch
. Jednak flagiGIT_FETCH_EXTRA_FLAGS
są dodawane po domyślnych flagach, których nie można modyfikować.
domyślnymi flagami są:
- GIT_DEPTH.
- lista referencji.
- Pilot o nazwie
origin
.
JeśliGIT_FETCH_EXTRA_FLAGS
jest:
- nie podano,
git fetch
flagi domyślne do--prune --quiet
wraz z domyślnymi flagami. - Po podaniu wartości
none
git fetch
jest wykonywane tylko z domyślnymi flagami.
na przykład domyślne flagi to --prune --quiet
, więc możesz sprawić, że git fetch
będzie bardziej gadatliwy, nadpisując to po prostu --prune
:
variables: GIT_FETCH_EXTRA_FLAGS: --prunescript: - ls -al cache/
powyższa konfiguracja powoduje, żegit fetch
jest wywoływana w ten sposób:
git fetch origin $REFSPECS --depth 50 --prune
gdzie$REFSPECS
jest wartością dostarczaną wewnętrznie przez GitLab.
płytkie klonowanie
wprowadzone w GitLab 8.9 jako funkcja eksperymentalna.
głębokość pobierania i klonowania można określić za pomocąGIT_DEPTH
GIT_DEPTH
robi płytki klon repozytorium i może znacznie przyspieszyć cloning.It może być pomocny dla repozytoriów z dużą liczbą commitów lub starych, dużych plików binarnych. Wartość jest ustawiona na git fetch
I git clone
.
w GitLab 12.0 i nowszych, nowo utworzone projekty mają automatycznie adefaultgit depth
wartość50
.
jeśli użyjesz głębokości1
I masz kolejkę zadań lub retryjobs, zadania mogą się nie powieść.
Git pobieranie i klonowanie jest oparte na referencji, takiej jak nazwa gałęzi, więc runnerscan ’ t clone a specific commit SHA. Jeśli wiele zadań znajduje się w kolejce lub próbujesz ponownie starego zadania, zatwierdzenie, które ma być przetestowane, musi znajdować się w sklonowanej historii git. Ustawienie zbyt małej wartości dla GIT_DEPTH
może uniemożliwić uruchomienie tych starych commitów i unresolved reference
jest wyświetlany w dziennikach. Następnie należy ponownie zmienić GIT_DEPTH
na wyższą wartość.
zadania, które opierają się nagit describe
mogą nie działać poprawnie, gdyGIT_DEPTH
są ustawione, ponieważ istnieje tylko część historii Gita.
aby pobrać lub sklonować tylko 3 ostatnie zmiany:
variables: GIT_DEPTH: "3"
możesz ustawić go globalnie lub dla zadania w sekcjivariables
.
własne katalogi budowania
wprowadzone w GitLab Runner 11.10.
domyślnie GitLab Runner klonuje repozytorium w unikalnej subpath katalogu$CI_BUILDS_DIR
. Jednak twój projekt może wymagać kodu w określonym katalogu (na przykład Go projects). W takim przypadku możesz określićGIT_CLONE_PATH
zmienną, aby polecić runnerowi sklonowanie katalogu w:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/project-nametest: script: - pwd
GIT_CLONE_PATH
musi zawsze znajdować się w$CI_BUILDS_DIR
. Katalog ustawiony w $CI_BUILDS_DIR
jest zależny od executora i konfiguracji runnerów.builds_dirsetting.
można tego użyć tylko wtedy, gdy w konfiguracji jest włączona opcja custom_build_dir
.Jest to domyślna konfiguracja dla wykonawców docker
I kubernetes
.
Obsługa współbieżności
wykonawca, który używa współbieżności większej niż1
może prowadzić do błędów. Wiele zadań może pracować w tym samym katalogu, jeślibuilds_dir
jest współdzielone między zadaniami.
biegacz nie stara się zapobiegać tej sytuacji. Do administratorów i programistów należy spełnienie wymagań konfiguracji biegacza.
aby uniknąć tego scenariusza, możesz użyć unikalnej ścieżki w$CI_BUILDS_DIR
, ponieważ runnerexposes udostępnia dwie dodatkowe zmienne, które zapewniają unikalnyID
współbieżności:
-
$CI_CONCURRENT_ID
: unikalny identyfikator dla wszystkich zadań uruchomionych w ramach programu.podany wykonawca. -
$CI_CONCURRENT_PROJECT_ID
: unikalny identyfikator dla wszystkich zadań uruchomionych w ramach danego wykonawcy i projektu.
najbardziej stabilna konfiguracja, która powinna działać dobrze w każdym scenariuszu i na każdym executorze, używa$CI_CONCURRENT_ID
wGIT_CLONE_PATH
. Na przykład:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/project-nametest: script: - pwd
$CI_CONCURRENT_PROJECT_ID
powinien być używany w połączeniu z $CI_PROJECT_PATH
jako $CI_PROJECT_PATH
div > udostępnia ścieżkę do repozytorium. Czyli group/subgroup/project
. Na przykład:
variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/$CI_PROJECT_PATHtest: script: - pwd
ścieżki zagnieżdżone
wartość GIT_CLONE_PATH
zostanie rozwinięta raz i zagnieżdżanie variableswithin nie jest obsługiwane.
na przykład zdefiniujesz obie zmienne poniżej w pliku.gitlab-ci.yml
:
variables: GOPATH: $CI_BUILDS_DIR/go GIT_CLONE_PATH: $GOPATH/src/namespace/project
wartośćGIT_CLONE_PATH
zostanie rozwinięta raz do$CI_BUILDS_DIR/go/src/namespace/project
I spowoduje błąd, ponieważ$CI_BUILDS_DIR
nie jest rozwijany.
job stages próby
wprowadzone w GitLab, wymaga GitLab Runner v1.9+.
Możesz ustawić liczbę prób, które uruchomione zadanie próbuje wykonać następujące etapy:
zmienna | opis |
---|---|
ARTIFACT_DOWNLOAD_ATTEMPTS |
liczba prób pobrania artefaktów uruchamiających zadanie |
w GitLab 12.10 i nowszych, liczba prób uruchomienia sekcji w zadaniu po No Such Container błąd (tylko executor Dockera). |
|
liczba prób pobrania źródeł uruchamiających zadanie | |
liczba prób przywrócenia pamięci podręcznej uruchamiającej zadanie |
domyślnie jest to jedna próba.
przykład:
variables: GET_SOURCES_ATTEMPTS: 3
możesz ustawić je globalnie lub dla zadania w sekcji variables
.
wywołania systemowe niedostępne na GitLab.com wspólne bieganie
GitLab.com współdzieleni biegacze biegają na CoreOS. Oznacza to, że nie można używać niektórych wywołań systemowych, takich jak getlogin
, z biblioteki standardowej C.
Ustawienia artefaktu i pamięci podręcznej
wprowadzone w GitLab Runner 13.9.
Ustawienia artefaktu i pamięci podręcznej kontrolują stopień kompresji artefaktów i pamięci podręcznej.Użyj tych ustawień, aby określić rozmiar archiwum tworzonego przez zadanie.
- w wolnej sieci ładowanie może być szybsze dla mniejszych archiwów.
- w szybkiej sieci, w której przepustowość i pamięć masowa nie są problemem, przesyłanie może być szybsze przy użyciu najszybszego współczynnika kompresji, mimo że produkowane archiwum jest większe.
aby strony GitLab obsługiwały żądania zakresu http, artefakty powinny używać ustawieniaARTIFACT_COMPRESSION_LEVEL: fastest
, ponieważ tylko nieskompresowane archiwa zip wspierają tę funkcję.
miernik może być również włączony, aby zapewnić szybkość transferu dla wysyłania i pobierania.
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"
zmienna | opis |
---|---|
TRANSFER_METER_FREQUENCY |
określ częstotliwość drukowania szybkości transferu miernika. Może być ustawiony na czas trwania (na przykład 1s lub 1m30s ). Czas trwania0 wyłącza miernik (domyślnie). Gdy wartość jest ustawiona, potok pokazuje miernik postępu dla artefaktów i pamięci podręcznej przesyłanych i pobieranych. |
aby dostosować współczynnik kompresji, Ustaw na fastest fast default default slow lub slowest . To ustawienie działa tylko z archiwizatorem Fastzip, więc funkcja GitLab Runner musi być również włączona 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. |