Middle
Jakie są różnice między artefaktami a cache w GitLab CI jako atrybutami zadania (job)?
sobes.tech AI
Odpowiedź od AI
Artefakty i pamięć podręczna w GitLab CI służą do przyspieszania kompilacji i testów, ale pełnią różne funkcje i mają różne cele.
Artefakty (artifacts):
- Cel: Zapisywanie wyników zadania (budowania, testów, dokumentacji itp.) do późniejszego użycia lub przeglądania. Mogą być pobierane ręcznie lub dostępne przez interfejs webowy.
- Czas życia: Określany przez konfigurację w
.gitlab-ci.yml. Mogą być usuwane po określonym czasie lub zachowywane. - Rozmiar: Zazwyczaj większy niż pamięć podręczna, ponieważ zawierają gotowe buildy, raporty i inne wyniki.
- Użycie: Przekazywanie wyników między zadaniami w różnych etapach lub do udostępniania użytkownikom.
Przykład konfiguracji:
artifacts:
paths: # ścieżki do plików i katalogów, które staną się artefaktami
- build/
- test-results.xml
expire_in: 1 week # czas życia artefaktów
Pamięć podręczna (cache):
- Cel: Zapisywanie zależności projektu lub wyników pośrednich w celu przyspieszenia kolejnych uruchomień tej samej zadania. Pamięć podręczna jest powiązana z określoną gałęzią lub tagiem (można skonfigurować).
- Czas życia: Zarządzany automatycznie przez GitLab. Stare wpisy pamięci podręcznej są usuwane, gdy przekroczony jest limit lub wygasa okres ważności. Pamięć podręczna może być automatycznie przywracana lub tworzona przy nowym uruchomieniu.
- Rozmiar: Zazwyczaj mniejszy niż artefakty, ponieważ zawiera zależności takie jak repozytoria Maven, pakiety npm itp.
- Użycie: Przyspieszenie instalacji zależności i skrócenie czasu budowania.
Przykład konfiguracji:
cache:
paths: # ścieżki do katalogów, które będą cache'owane
- node_modules/
- ~/.m2/repository/
key: # klucz pamięci podręcznej, można używać zdefiniowanych zmiennych
files:
- package-lock.json # pamięć podręczna zostanie zaktualizowana, gdy ten plik się zmieni
prefix: ${CI_COMMIT_REF_SLUG} # dodaje prefiks z nazwą gałęzi/taga
Kluczowe różnice:
| Cecha | Artefakty (artifacts) | Pamięć podręczna (cache) |
|---|---|---|
| Cel | Zapisywanie wyników zadania | Zapisywanie zależności w celu przyspieszenia kompilacji |
| Użycie | Pobieranie, przekazywanie między zadaniami (różne etapy) | Automatyczne przywracanie/tworzenie |
| Czas życia | Wyraźnie określony w .gitlab-ci.yml |
Zarządzany przez GitLab, automatyczne usuwanie |
| Dostęp | Przez interfejs web, API | Automatycznie używany przez Runnera |
| Związek z gałęzią | Brak bezpośredniego powiązania (chyba że wyraźnie wskazane) | Zazwyczaj powiązany z gałęzią dla izolacji |
Tak więc, artefakty to dane wyjściowe kompilacji, a pamięć podręczna to komponenty wielokrotnego użytku przyspieszające sam proces kompilacji.
job_example:
stage: build
script:
- echo "Budowa i testy..."
- mkdir build
- echo "Wynik build" > build/result.txt
- echo "Instalacja zależności"
cache:
paths:
- dependency_dir/ # folder z zależnościami, będzie cache'owany
artifacts:
paths:
- build/ # folder build stanie się artefaktem