Sobes.tech
Middle

Mik a különbségek az artefaktok és a cache között a GitLab CI-ben, mint feladat (job) attribútumok?

sobes.tech MI

Válasz az MI-től

A GitLab CI-ben az artefaktok és a cache a build és tesztelés gyorsítására szolgálnak, de különböző funkciókat töltenek be és más célt szolgálnak.

Artefaktok (artifacts):

  • Cél: A feladat (build, teszt, dokumentáció stb.) eredményeinek mentése későbbi felhasználás vagy megtekintés céljából. Manuálisan letölthetők vagy webes felületen keresztül elérhetők.
  • Élettartam: A .gitlab-ci.yml beállításaitól függ. Törölhetők egy adott idő után vagy megőrizhetők.
  • Méret: Általában nagyobb, mint a cache, mivel kész build-eket, jelentéseket és más eredményeket tartalmaz.
  • Használat: Eredmények átadása különböző szakaszokban lévő feladatok között vagy felhasználók számára.

Konfigurációs példa:

artifacts:
  paths: # fájlok és könyvtárak útvonalai, amelyek artefaktokká válnak
    - build/
    - test-results.xml
  expire_in: 1 hét # artefaktok élettartama

Cache:

  • Cél: A projekt függőségeinek vagy közbenső eredményeinek mentése a következő futtatások gyorsítása érdekében. A cache egy adott ág vagy címke (beállítható).
  • Élettartam: Automatikusan kezeli a GitLab. Régi bejegyzések törlődnek, amikor a kvóta túllépésre kerül vagy lejár az idő.
  • Méret: Általában kisebb, mint az artefaktok, mivel függőségeket tartalmaz, például Maven repository-kat, npm csomagokat stb.
  • Használat: A függőségek telepítésének gyorsítása és a build idő csökkentése.

Konfigurációs példa:

cache:
  paths: # könyvtárak útvonalai, amelyek cache-elhetők
    - node_modules/
    - ~/.m2/repository/
  key: # cache kulcs, előre definiált változókat használhat
    files:
      - package-lock.json # a cache frissül, ha ez a fájl változik
    prefix: ${CI_COMMIT_REF_SLUG} # prefix hozzáadása a branch/nevezékhez

Fő különbségek:

Jellemző Artefaktok (artifacts) Cache
Cél A feladat eredményeinek mentése A függőségek mentése a gyorsítás érdekében
Használat Letöltés, átadás feladatok között (különböző szakaszok) Automatikus visszanyerés/alkotás
Élettartam Egyértelműen megadva a .gitlab-ci.yml-ben A GitLab által kezelt, automatikus törlés
Hozzáférés Webes felületen, API-n keresztül Automatikusan használja a Runner
Kapcsolat a branch-el Nincs közvetlen kapcsolat (kifejezetten nem megadott esetben) Általában a branch-hez kötött a izoláció érdekében

Így az artefaktok a build kimeneti adatai, míg a cache újrahasznosítható összetevők a build gyorsítása érdekében.

job_example:
  stage: build
  script:
    - echo "Building and testing..."
    - mkdir build
    - echo "Build result" > build/result.txt
    - echo "dependency installation"
  cache:
    paths:
      - dependency_dir/ # függőségek mappája, cache-elni fog
  artifacts:
    paths:
      - build/ # build mappa artefakt lesz