Sobes.tech
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