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.ymlkonfiqurasiyası 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