Middle
Фарқият байни артефактҳо ва кэш дар GitLab CI ҳамчун хосиятҳои вазифа (job) чист?
sobes.tech AI
Ҷавоб аз AI
Артефактҳо ва кэш дар GitLab CI барои суръат бахшидани ҷамъоварӣ ва санҷиш хизмат мекунанд, аммо вазифаҳои гуногун доранд ва мақсадҳои гуногун доранд.
Артефактҳо (artifacts):
- Мақсад: нигоҳ доштани натиҷаҳои иҷрои вазифа (ҷамъоварӣ, санҷишҳо, ҳуҷҷатгузорӣ ва ғайра) барои истифодаи баъдӣ ё тамошо. Онҳо метавонанд бо дастӣ зеркашӣ шаванд ё тавассути интерфейси веб дастрас бошанд.
- Вақти зиндагӣ: Аз танзимот дар
.gitlab-ci.ymlмуайян карда мешавад. Мумкин аст пас аз муддати муайян тоза карда шаванд ё нигоҳ дошта шаванд. - Андоза: одатан калонтар аз кэш, зеро дорои ҷамъоварии тайёр, ҳисоботҳо ва дигар натиҷаҳо мебошанд.
- Истифода: интиқол додани натиҷаҳо байни вазифаҳо дар марҳилаҳои гуногун ё барои дастрасӣ ба корбарон.
Маслиҳат барои конфигуратсия:
artifacts:
paths: # роҳҳо ба файлҳо ва директорияҳо, ки артефактҳо мешаванд
- build/
- test-results.xml
expire_in: 1 ҳафта # вақти зиндагии артефактҳо
Кэш (cache):
- Мақсад: нигоҳ доштани вобастагиҳои лоиҳа ё натиҷаҳои миёнаравӣ барои суръат бахшидани иҷрои баъдӣ. Кэш ба шоха ё тамғаи муайян вобаста аст (метавон танзим кард).
- Вақти зиндагӣ: автоматӣ аз ҷониби GitLab идора мешавад. Сабтҳои кӯҳнаи кэш тоза карда мешаванд, вақте ки квота зиёд мешавад ё мӯҳлати истифода тамом мешавад. Кэш метавонад автоматӣ барқарор ё эҷод шавад дар вақти оғози нав.
- Андоза: одатан хурдтар аз артефактҳо, зеро дорои вобастагиҳо ба монанди Maven repository, npm пакетҳо ва ғайра.
- Истифода: суръат бахшидани насб кардани вобастагиҳо ва кӯтоҳ кардани вақти ҷамъоварӣ.
Маслиҳат барои конфигуратсия:
cache:
paths: # роҳҳо ба директорияҳо, ки кэш мешаванд
- node_modules/
- ~/.m2/repository/
key: # калиди кэш, метавонад аз тағйирёбандаҳои пешфарз истифода кунад
files:
- package-lock.json # кэш бо тағйир додани ин файл навсозӣ мешавад
prefix: ${CI_COMMIT_REF_SLUG} # илова кардани пешфикс бо номи шоха ё тамға
Фарқиятҳои асосӣ:
| Хусусият | Артефактҳо (artifacts) | Кэш (cache) |
|---|---|---|
| Мақсад | нигоҳ доштани натоиҷ вазифа | нигоҳ доштани вобастагиҳо барои суръат бахшидан |
| Истифода | зеркашӣ, интиқол байни вазифаҳо (марҳилаҳои гуногун) | автоматӣ барқарор кардан/эҷод кардан |
| Вақти зиндагӣ | равшан дар .gitlab-ci.yml муайян карда мешавад |
идора мешавад аз ҷониби GitLab, автоматӣ тоза кардан |
| Дастрасӣ | тавассути интерфейси веб, API | автоматӣ истифода мешавад аз Runner |
| Вазъият бо шоха | бевосита нест (агар нарасмӣ бошад) | одатан ба шоха вобаста аст барои ҷудоии |
Аз ин рӯ, артефактҳо натиҷаҳои бардоштани, дар ҳоле ки кэш компонентҳои такрорӣ барои суръат бахшидани худи бардоштани мебошанд.
job_example:
stage: build
script:
- echo "Building and testing..."
- mkdir build
- echo "Build result" > build/result.txt
- echo "dependency installation"
cache:
paths:
- dependency_dir/ # папка бо вобастагиҳо, кэш карда мешавад
artifacts:
paths:
- build/ # папкаи build ҳамчун артефакт мешавад