Middle
Jaké jsou rozdíly mezi artefakty a cache v GitLab CI jako atributy úlohy (job)?
sobes.tech AI
Odpověď od AI
Artefakty a cache v GitLab CI slouží ke zrychlení sestavení a testování, ale plní různé funkce a mají odlišné určení.
Artefakty (artifacts):
- Účel: Uložení výsledků vykonané úlohy (sestavení, testy, dokumentace atd.) pro pozdější použití nebo zobrazení. Mohou být staženy ručně nebo dostupné přes webové rozhraní.
- Doba životnosti: Je určena nastavením v
.gitlab-ci.yml. Mohou být smazány po určité době nebo zachovány. - Velikost: Obvykle větší než cache, protože obsahují hotové sestavení, zprávy a další výsledky.
- Použití: Přenos výsledků mezi úlohami v různých fázích nebo pro zpřístupnění uživatelům.
Příklad konfigurace:
artifacts:
paths: # cesty k souborům a adresářům, které se stanou artefakty
- build/
- test-results.xml
expire_in: 1 týden # doba životnosti artefaktů
Cache:
- Účel: Uložení závislostí projektu nebo mezivýsledků pro urychlení následných spuštění téže úlohy. Cache je vázána na konkrétní větev nebo tag (lze nastavit).
- Doba životnosti: Automaticky spravováno GitLabem. Staré záznamy cache jsou odstraňovány, když je překročena kvóta nebo vyprší doba platnosti. Cache může být automaticky obnoven nebo vytvořen při novém spuštění.
- Velikost: Obvykle menší než artefakty, protože obsahuje závislosti typu Maven repozitářů, npm balíčků atd.
- Použití: Zrychlení instalace závislostí a zkrácení doby sestavení.
Příklad konfigurace:
cache:
paths: # cesty k adresářům, které budou cacheovány
- node_modules/
- ~/.m2/repository/
key: # klíč cache, může používat předdefinované proměnné
files:
- package-lock.json # cache bude aktualizována při změně tohoto souboru
prefix: ${CI_COMMIT_REF_SLUG} # přidává prefix s názvem větve/tagu
Klíčové rozdíly:
| Vlastnost | Artefakty (artifacts) | Cache |
|---|---|---|
| Účel | Uložení výstupů úlohy | Uložení závislostí pro urychlení |
| Použití | Stažení, předání mezi úlohami (různé fáze) | Automatické obnovení/vytvoření |
| Doba životnosti | Výslovně nastavena v .gitlab-ci.yml |
Řízeno GitLabem, automatické mazání |
| Přístup | Přes webové rozhraní, API | Automaticky používá Runner |
| Vazba na větev | Není přímá vazba (není-li výslovně uvedeno) | Obvykle je vázáno na větev pro izolaci |
Tedy artefakty jsou výstupy sestavení, zatímco cache jsou opakovaně použitelné komponenty pro urychlení samotného sestavení.
job_example:
stage: build
script:
- echo "Building and testing..."
- mkdir build
- echo "Build result" > build/result.txt
- echo "dependency installation"
cache:
paths:
- dependency_dir/ # složka s závislostmi, bude cacheována
artifacts:
paths:
- build/ # složka build se stane artefaktem