Sobes.tech
Middle

GitLab CI-də tapşırıq (iş) atributları kimi artefaktlar və keş arasındakı fərqlər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

GitLab CI-də artefaktlar və önbellek quruluş və testləri sürətləndirmək üçün istifadə olunur, lakin müxtəlif funksiyaları və məqsədləri var.

Artefaktlar (artifacts):

  • Məqsəd: Bir tapşırığın (quruluş, test, sənədləşdirmə və s.) nəticələrini saxlamaq, sonradan istifadə və ya baxış üçün. Onlar əl ilə yüklənə və ya veb interfeys vasitəsilə əldə oluna bilər.
  • Müddət: .gitlab-ci.yml konfiqurasiyası ilə müəyyən edilir. Onlar müəyyən vaxtdan sonra silinə və ya saxlanıla bilər.
  • Həcmi: Ümumiyyətlə önbellekdən böyükdür, çünki hazır quruluşlar, hesabatlar və digər nəticələri ehtiva edir.
  • İstifadə: Nəticələri müxtəlif mərhələlərdəki tapşırıqlar arasında ötürmək və ya istifadəçilərə təqdim etmək.

Konfiqurasiya nümunəsi:

artifacts:
  paths: # artefakt olacaq fayl və qovluqların yolları
    - build/
    - test-results.xml
  expire_in: 1 week # artefaktların ömrü

Önbellek (cache):

  • Məqsəd: Layihənin asılılıqlarını və ya müvəqqəti nəticələri saxlamaq, eyni tapşırığın növbəti icrasını sürətləndirmək. Önbellek müəyyən bir filial və ya etiketə bağlıdır (konfiqurasiya oluna bilər).
  • Müddət: GitLab tərəfindən avtomatik idarə olunur. Köhnə önbellek qeydləri kvota aşılırsa və ya müddət bitərsə silinir. Önbellek yeni icrada avtomatik bərpa və ya yaradılır.
  • Həcmi: Ümumiyyətlə artefektən kiçikdir, çünki Maven depoları, npm paketləri və s. ehtiva edir.
  • İstifadə: Asılılıqların quraşdırılmasını sürətləndirmək və quruluş vaxtını azaltmaq.

Konfiqurasiya nümunəsi:

cache:
  paths: # cache ediləcək qovluqların yolları
    - node_modules/
    - ~/.m2/repository/
  key: # cache açarı, əvvəlcədən təyin olunmuş dəyişənlərdən istifadə edə bilər
    files:
      - package-lock.json # bu fayl dəyişərsə, cache yenilənəcək
    prefix: ${CI_COMMIT_REF_SLUG} # filial/etiket adı ilə prefiks əlavə edir

Əsas fərqlər:

Xüsusiyyət Artefaktlar (artifacts) Önbellek (cache)
Məqsəd Tapşırığın nəticələrini saxlamaq Quruluşu sürətləndirmək üçün asılılıqları saxlamaq
İstifadə Yükləmək, tapşırıqlar arasında ötürmək (fərqli mərhələlər) Avtomatik bərpa/yaratma
Müddət .gitlab-ci.yml-də açıq şəkildə göstərilir GitLab tərəfindən idarə olunur, avtomatik silinir
Əlçatanlıq Veb interfeys və API vasitəsilə Runner tərəfindən avtomatik istifadə olunur
Filial ilə əlaqə Birbaşa əlaqə yoxdur (əgər açıq şəkildə göstərilməyibsə) Adətən filial ilə əlaqəlidir, izolyasiya üçün

Beləliklə, artefaktlar quruluşun çıxış məlumatlarıdır, önbellek isə quruluşu sürətləndirmək üçün təkrar istifadə olunan komponentlərdir.

job_example:
  stage: build
  script:
    - echo "Quruluş və test..."
    - mkdir build
    - echo "Quruluş nəticəsi" > build/result.txt
    - echo "Asılılıqları quraşdır"
  cache:
    paths:
      - dependency_dir/ # asılılıqların yerləşdiyi qovluq, cache olunacaq
  artifacts:
    paths:
      - build/ # build qovluğu artefakt olacaq