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