Sobes.tech
Middle

GitLab CI'da vazifa (job) atributlari sifatida artefaktlar va kesh o'rtasidagi farqlar nima?

sobes.tech AI

AIdan javob

GitLab CI da artefaktlar va cache tezlari qurilish va testlarni tezlashtirish uchun ishlatiladi, ammo ular turli funktsiyalarni bajaradi va maqsadlari farq qiladi.

Artefaktlar (artifacts):

  • Maqsad: Bir vazifaning (qurilish, test, hujjat va boshqalar) natijalarini saqlash, keyinchalik foydalanish yoki ko'rish uchun. Ular qo'lda yuklab olinishi yoki veb-interfeys orqali kirish mumkin.
  • Hayot muddati: .gitlab-ci.yml sozlamalari bilan belgilangan. Ular ma'lum bir vaqt o'tgach o'chirilishi yoki saqlanishi mumkin.
  • Hajm: Odatda cache dan katta, chunki ular tayyor qurilmalar, hisobotlar va boshqa natijalarni o'z ichiga oladi.
  • Foydalanish: Natijalarni turli bosqichdagi vazifalar o'rtasida uzatish yoki foydalanuvchilarga taqdim etish.

Sozlamaning misoli:

artifacts:
  paths: # artefakt bo'ladigan fayl va kataloglarning yo'llari
    - build/
    - test-results.xml
  expire_in: 1 week # artefaktlarning hayoti

Cache (cache):

  • Maqsad: Loyihaning bog'liqliklarini yoki oraliq natijalarni saqlash, shuningdek, bir xil vazifani takroran ishga tushirishni tezlashtirish. Cache ma'lum bir tarmoq yoki teg bilan bog'langan (sozlanishi mumkin).
  • Hayot muddati: GitLab tomonidan avtomatik boshqariladi. Eski cache yozuvlari kvota oshirilganda yoki amal qilish muddati o'tgach o'chiriladi. Cache yangi ishga tushirishda avtomatik ravishda tiklanishi yoki yaratilishi mumkin.
  • Hajm: Odatda artefaktlardan kichikroq, chunki u Maven depozitlari, npm paketlari va boshqalarni o'z ichiga oladi.
  • Foydalanish: Bog'liqliklarni o'rnatishni tezlashtirish va qurilish vaqtini qisqartirish.

Sozlamaning misoli:

cache:
  paths: # cache qilinadigan kataloglarning yo'llari
    - node_modules/
    - ~/.m2/repository/
  key: # cache kaliti, oldindan belgilangan o'zgaruvchilarni ishlatish mumkin
    files:
      - package-lock.json # bu fayl o'zgarsa cache yangilanadi
    prefix: ${CI_COMMIT_REF_SLUG} # tarmoq/teg nomi bilan prefiks qo'shadi

Asosiy farqlar:

Xususiyat Artefaktlar (artifacts) Cache (cache)
Maqsad Vazifaning natijalarini saqlash Bog'liqliklarni saqlash, qurilishni tezlashtirish
Foydalanish Yuklab olish, vazifalar o'rtasida uzatish (turli bosqichlar) Avtomatik tiklash/yaratish
Hayot muddati .gitlab-ci.yml da aniq belgilangan GitLab tomonidan boshqariladi, avtomatik o'chirish
Kirish Veb-interfeys, API orqali Runner tomonidan avtomatik ishlatiladi
Tarmoq bilan bog'liqlik To'g'ridan-to'g'ri bog'lanmagan (agar aniq ko'rsatilmagan bo'lsa) Odatda tarmoqqa bog'langan, izolyatsiya uchun

Shunday qilib, artefaktlar qurilmaning chiqish ma'lumotlari bo'lsa, cache qurilishni tezlashtirish uchun qayta ishlatiladigan komponentlardir.

job_example:
  stage: build
  script:
    - echo "Qurilish va test..."
    - mkdir build
    - echo "Qurilish natijasi" > build/result.txt
    - echo "Bog'liqliklarni o'rnatish"
  cache:
    paths:
      - dependency_dir/ # bog'liqliklar joylashgan katalog, cachega olinadi
  artifacts:
    paths:
      - build/ # build katalogi artefakt bo'ladi