Middle
Koje su razlike između artefakata i keša u GitLab CI kao atributa zadatka (job)?
sobes.tech АИ
Одговор од АИ
Artefakti i keš u GitLab CI služe za ubrzanje sastavljanja i testiranja, ali imaju različite funkcije i namenjene su za različite svrhe.
Artefakti (artifacts):
- Svrha: Čuvanje rezultata izvršene zadatka (sastavljanje, testovi, dokumentacija itd.) za kasniju upotrebu ili pregled. Mogu biti preuzeti ručno ili dostupni putem veb interfejsa.
- Vreme trajanja: Određuje se podešavanjima u
.gitlab-ci.yml. Mogu biti obrisani nakon određenog vremena ili sačuvani. - Veličina: Obično veći od keša, jer sadrže gotove sastave, izveštaje i druge rezultate.
- Upotreba: Prenos rezultata između zadataka u različitim fazama ili za pružanje korisnicima.
Primer konfiguracije:
artifacts:
paths: # putanje do fajlova i direktorijuma koji će postati artefakti
- build/
- test-results.xml
expire_in: 1 nedelja # vreme trajanja artefakata
Keš (cache):
- Svrha: Čuvanje zavisnosti projekta ili međuzavisnih rezultata za ubrzanje narednih pokretanja iste zadatka. Keš je vezan za određenu granu ili oznaku (može se podesiti).
- Vreme trajanja: Automatski se upravlja od strane GitLab-a. Stare zapise keša brišu se kada se prekorači kvota ili istekne rok trajanja. Keš može biti automatski obnovljen ili kreiran pri novom pokretanju.
- Veličina: Obično manji od artefakata, jer sadrži zavisnosti poput Maven repozitorijuma, npm paketa itd.
- Upotreba: Ubrzavanje instalacije zavisnosti i skraćivanje vremena sastavljanja.
Primer konfiguracije:
cache:
paths: # putanje do direktorijuma koji će biti keširani
- node_modules/
- ~/.m2/repository/
key: # ključ keša, može koristiti unapred definisane promenljive
files:
- package-lock.json # keš će se ažurirati promenom ovog fajla
prefix: ${CI_COMMIT_REF_SLUG} # dodaje prefiks sa imenom grane/oznake
Ključne razlike:
| Osobina | Artefakti (artifacts) | Keš (cache) |
|---|---|---|
| Svrha | Čuvanje rezultata zadatka | Čuvanje zavisnosti za ubrzanje |
| Upotreba | Preuzimanje, prenošenje između zadataka (različite faze) | Automatsko obnavljanje/kreiranje |
| Vreme trajanja | Izričito podešeno u .gitlab-ci.yml |
Upravlja ga GitLab, automatsko brisanje |
| Pristup | Kroz veb interfejs, API | Automatski koristi Runner |
| Veza sa granom | Nema direktnu vezu (ako nije izričito navedeno) | Obično je vezano za granu radi izolacije |
Tako, artefakti su izlazni podaci sastavljanja, dok je keš ponovo upotrebljivi sastavni delovi za ubrzanje samog sastavljanja.
job_example:
stage: build
script:
- echo "Building and testing..."
- mkdir build
- echo "Build result" > build/result.txt
- echo "dependency installation"
cache:
paths:
- dependency_dir/ # folder sa zavisnostima, biće keširan
artifacts:
paths:
- build/ # folder build biće artefakt