Middle
Aké sú rozdiely medzi artefaktmi a cache v GitLab CI ako atribúty úlohy (job)?
sobes.tech AI
Odpoveď od AI
Artefakty a cache v GitLab CI slúžia na zrýchlenie zostavenia a testovania, ale plnia rôzne funkcie a majú odlišné určenie.
Artefakty (artifacts):
- Účel: Uloženie výsledkov vykonanej úlohy (zostavenie, testy, dokumentácia atď.) pre neskoršie použitie alebo zobrazenie. Môžu byť stiahnuté manuálne alebo dostupné cez webové rozhranie.
- Doba životnosti: Určuje sa nastavením v
.gitlab-ci.yml. Môžu byť vymazané po určitom čase alebo zachované. - Veľkosť: Zvyčajne väčšie ako cache, pretože obsahujú hotové zostavy, správy a ďalšie výsledky.
- Použitie: Prenos výsledkov medzi úlohami v rôznych fázach alebo na poskytnutie používateľom.
Príklad konfigurácie:
artifacts:
paths: # cesty k súborom a adresárom, ktoré sa stanú artefaktami
- build/
- test-results.xml
expire_in: 1 týždeň # doba životnosti artefaktov
Cache:
- Účel: Uloženie závislostí projektu alebo medzičlánkových výsledkov na zrýchlenie nasledujúcich spustení tej istej úlohy. Cache je viazaná na konkrétnu vetvu alebo tag (môže sa nastaviť).
- Doba životnosti: Automaticky spravované GitLabom. Staré záznamy cache sa odstraňujú, keď sa prekročí kvóta alebo vyprší doba platnosti. Cache môže byť automaticky obnovená alebo vytvorená pri novom spustení.
- Veľkosť: Zvyčajne menšia ako artefakty, pretože obsahuje závislosti ako Maven repozitáre, npm balíky atď.
- Použitie: Zrýchlenie inštalácie závislostí a skrátenie času zostavenia.
Príklad konfigurácie:
cache:
paths: # cesty k adresárom, ktoré budú cacheované
- node_modules/
- ~/.m2/repository/
key: # kľúč cache, môže používať preddefinované premenné
files:
- package-lock.json # cache sa bude aktualizovať pri zmene tohto súboru
prefix: ${CI_COMMIT_REF_SLUG} # pridáva prefix s názvom vetvy/tagu
Kľúčové rozdiely:
| Vlastnosť | Artefakty (artifacts) | Cache |
|---|---|---|
| Účel | Uloženie výstupov úlohy | Uloženie závislostí na zrýchlenie |
| Použitie | Stiahnutie, prenos medzi úlohami (rôzne fázy) | Automatické obnovenie/vytvorenie |
| Doba životnosti | Výslovne nastavená v .gitlab-ci.yml |
Riadi sa GitLabom, automatické mazanie |
| Prístup | Cez webové rozhranie, API | Automaticky používa Runner |
| Väzba na vetvu | Nie je priama väzba (ak nie je výslovne uvedené) | Zvyčajne je viazané na vetvu pre izoláciu |
Takže artefakty sú výstupné dáta zostavenia, zatiaľ čo cache sú opakovane použiteľné komponenty na zrýchlenie samotného zostavenia.
job_example:
stage: build
script:
- echo "Building and testing..."
- mkdir build
- echo "Build result" > build/result.txt
- echo "dependency installation"
cache:
paths:
- dependency_dir/ # priečinok s závislosťami, bude cacheovaný
artifacts:
paths:
- build/ # priečinok build sa stane artefaktom