Sobes.tech
Middle

Kādi ir atšķirības starp artefaktiem un kešatmiņu GitLab CI kā uzdevuma (job) atribūtiem?

sobes.tech AI

Atbilde no AI

GitLab CI artefakti un kešs kalpo, lai paātrinātu būvniecību un testēšanu, taču tie pilda dažādas funkcijas un ir paredzēti dažādiem mērķiem.

Artefakti (artifacts):

  • Mērķis: Saglabāt uzdevuma (būvniecības, testu, dokumentācijas utt.) rezultātus turpmākai izmantošanai vai pārskatīšanai. Tie var tikt lejupielādēti manuāli vai pieejami caur tīmekļa saskarni.
  • Derīguma laiks: Nosaka .gitlab-ci.yml konfigurācija. Var tikt dzēsti pēc noteikta laika vai saglabāti.
  • Izmērs: Parasti lielāki par kešiem, jo satur gatavas būves, pārskatus un citus rezultātus.
  • Izmantošana: Rezultātu nodošanai starp uzdevumiem dažādās stadijās vai lietotājiem.

Konfigurācijas piemērs:

artifacts:
  paths: # ceļi uz failiem un direktorijām, kas kļūs par artefaktiem
    - build/
    - test-results.xml
  expire_in: 1 week # artefaktu derīguma laiks

Kešs (cache):

  • Mērķis: Saglabāt projekta atkarības vai starpposma rezultātus, lai paātrinātu turpmākos izpildes gadījumus vienam un tam pašam uzdevumam. Kešs ir saistīts ar noteiktu zaru vai tagu (var konfigurēt).
  • Derīguma laiks: Automātiski pārvalda GitLab. Vecās keša ieraksti tiek dzēsti, kad pārsniedz kvotu vai beidzas derīguma termiņš. Kešs var tikt automātiski atjaunots vai izveidots jauna izpildes laikā.
  • Izmērs: Parasti mazāks par artefaktiem, jo satur atkarības, piemēram, Maven repozitorijus, npm pakotnes utt.
  • Izmantošana: Atkarību instalēšanas paātrināšanai un būvniecības laika samazināšanai.

Konfigurācijas piemērs:

cache:
  paths: # ceļi uz direktorijām, kas tiks kešētas
    - node_modules/
    - ~/.m2/repository/
  key: # keša atslēga, var izmantot iepriekš definētas mainīgās
    files:
      - package-lock.json # kešs tiks atjaunināts, mainoties šim failam
    prefix: ${CI_COMMIT_REF_SLUG} # pievieno prefiksu ar zara/taga nosaukumu

Galvenās atšķirības:

Raksturlielums Artefakti (artifacts) Kešs (cache)
Mērķis Saglabāt rezultātus no uzdevuma Saglabāt atkarības paātrinājumam
Izmantošana Lejupielāde, nodošana starp uzdevumiem (dažādās stadijās) Automātiska atjaunošana/izveide
Derīguma laiks Skaidri noteikts .gitlab-ci.yml konfigurācijā Pārvalda GitLab, automātiska dzēšana
Piekļuve Caur tīmekļa saskarni, API Automātiski izmanto Runneris
Saistība ar zaru Nav tieša saistība (ja nav norādīts) Parasti saistīts ar zaru izolācijai

Tādējādi, artefakti ir būvniecības izejvadoti, bet kešs ir atkārtoti izmantoti komponenti būvniecības paātrināšanai.

job_example:
  stage: build
  script:
    - echo "Būvēšana un testēšana..."
    - mkdir build
    - echo "Būves rezultāts" > build/result.txt
    - echo "atkarību instalēšana"
  cache:
    paths:
      - dependency_dir/ # atkarību mape, tiks kešēta
  artifacts:
    paths:
      - build/ # būves mape kļūs par artefaktu