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.ymlsozlamalari 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