Middle
Kokie yra skirtumai tarp artefaktų ir cache GitLab CI kaip užduoties (job) atributų?
sobes.tech AI
Atsakymas iš AI
„Artefaktai“ ir „kėšas“ GitLab CI tarnauja kaip priemonės, skirtos pagreitinti statybą ir testavimą, tačiau jie atlieka skirtingas funkcijas ir turi skirtingą paskirtį.
Artefaktai (artifacts):
- Paskirtis: Išsaugoti užduoties (kūrimo, testų, dokumentacijos ir kt.) rezultatus vėlesniam naudojimui ar peržiūrai. Jie gali būti atsisiunčiami rankiniu būdu arba prieinami per žiniatinklio sąsają.
- Gyvenimo trukmė: Nustatoma
.gitlab-ci.ymlnustatymuose. Jie gali būti ištrinti po tam tikro laiko arba išsaugoti. - Dydis: Paprastai didesnis nei kėšas, nes jie apima paruoštus kūrinius, ataskaitas ir kitus rezultatus.
- Naudojimas: Rezultatų perdavimas tarp skirtingų etapų užduočių arba prieigos suteikimas vartotojams.
Konfigūracijos pavyzdys:
artifacts:
paths: # kelių iki failų ir katalogų keliai, kurie taps artefaktais
- build/
- test-results.xml
expire_in: 1 savaitė # artefaktų galiojimo laikas
Kėšas (cache):
- Paskirtis: Projekto priklausomybių arba tarpinio rezultato saugojimas, siekiant pagreitinti vėlesnius vykdymus tos pačios užduoties. Kėšas yra susietas su konkrečia šaka arba žyme (gali būti nustatyta).
- Gyvenimo trukmė: Automatiškai valdo GitLab. Senos įrašai ištrinami, kai viršijama kvota arba pasibaigia galiojimo laikas. Kėšas gali būti automatiškai atnaujintas arba sukurtas naujo paleidimo metu.
- Dydis: Paprastai mažesnis nei artefaktai, nes jame yra priklausomybės, tokios kaip Maven saugyklos, npm paketai ir kt.
- Naudojimas: Priklausomybių įdiegimo pagreitinimas ir statybos laiko sutrumpinimas.
Konfigūracijos pavyzdys:
cache:
paths: # kelių iki katalogų, kurie bus kėšiuojami
- node_modules/
- ~/.m2/repository/
key: # kėšo raktas, gali naudoti iš anksto apibrėžtas kintamąsias
files:
- package-lock.json # kėšas bus atnaujintas pakeitus šį failą
prefix: ${CI_COMMIT_REF_SLUG} # prideda prefiksą su šakos/žymės pavadinimu
Pagrindiniai skirtumai:
| Savybė | Artefaktai (artifacts) | Kėšas (cache) |
|---|---|---|
| Paskirtis | Išsaugoti rezultatus užduoties | Išsaugoti priklausomybes greitinimui |
| Naudojimas | Atsisiuntimas, perdavimas tarp užduočių (skirtinguose etapuose) | Automatinis atnaujinimas / sukūrimas |
| Gyvenimo trukmė | Aiškiai nustatyta .gitlab-ci.yml faile |
Valdo GitLab, automatinis ištrynimas |
| Prieiga | Per žiniatinklio sąsają, API | Automatiškai naudoja Runner-į |
| Ryšys su šaka | Nėra tiesioginio ryšio (jei nėra aiškiai nurodyta) | Paprastai susieta su šaka izoliacijai |
Taigi, artefaktai yra išvesties duomenys iš statybos, o kėšas yra pakartotinai naudojami komponentai, siekiant pagreitinti pačią statybą.
job_example:
stage: build
script:
- echo "Building and testing..."
- mkdir build
- echo "Build result" > build/result.txt
- echo "dependency installation"
cache:
paths:
- dependency_dir/ # priklausomybių katalogas, bus kėšiuojamas
artifacts:
paths:
- build/ # statybos katalogas taps artefaktu