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.ymlbeá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