Middle
GitLab CI'de görev (job) öznitelikleri olarak artefaktlar ve önbellek arasındaki farklar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
GitLab CI'de artefaktlar ve önbellek, derleme ve testleri hızlandırmak için kullanılır, ancak farklı işlevleri ve amaçları vardır.
Artefaktlar (artifacts):
- Amaç: Bir görevin (derleme, test, belge vb.) sonuçlarını saklamak, daha sonra kullanmak veya görüntülemek için. Bunlar manuel olarak indirilebilir veya web arayüzü üzerinden erişilebilir.
- Ömür:
.gitlab-ci.ymlyapılandırmasıyla belirlenir. Belirli bir süre sonra silinebilir veya saklanabilir. - Boyut: Genellikle önbellekten büyüktür, çünkü hazır derlemeleri, raporları ve diğer sonuçları içerir.
- Kullanım: Sonuçları farklı aşamalardaki görevler arasında aktarmak veya kullanıcılara sunmak.
Yapılandırma örneği:
artifacts:
paths: # artefakt haline gelecek dosya ve dizinlerin yolları
- build/
- test-results.xml
expire_in: 1 week # artefaktların ömrü
Önbellek (cache):
- Amaç: Proje bağımlılıklarını veya ara sonuçları saklamak, aynı görevi tekrar çalıştırırken hız kazanmak. Önbellek belirli bir dal veya etikete bağlıdır (yapılandırılabilir).
- Ömür: GitLab tarafından otomatik yönetilir. Eski önbellek girdileri, kota aşıldığında veya süresi dolduğunda silinir. Önbellek, yeni bir çalıştırmada otomatik olarak geri yüklenebilir veya oluşturulabilir.
- Boyut: Genellikle artefaktan küçüktür, çünkü Maven depoları, npm paketleri vb. içerir.
- Kullanım: Bağımlılıkların kurulmasını hızlandırmak ve derleme süresini azaltmak.
Yapılandırma örneği:
cache:
paths: # önbelleğe alınacak dizinlerin yolları
- node_modules/
- ~/.m2/repository/
key: # önbellek anahtarı, önceden tanımlı değişkenler kullanılabilir
files:
- package-lock.json # bu dosya değişirse önbellek güncellenir
prefix: ${CI_COMMIT_REF_SLUG} # dal/etiket adını içeren öneki ekler
Temel farklar:
| Özellik | Artefaktlar (artifacts) | Önbellek (cache) |
|---|---|---|
| Amaç | Görevin sonuçlarını saklamak | Derlemeyi hızlandırmak için bağımlılıkları saklamak |
| Kullanım | İndirme, görevler arasında aktarım (farklı aşamalar) | Otomatik geri yükleme/oluşturma |
| Ömür | .gitlab-ci.yml içinde açıkça belirtilir |
GitLab tarafından yönetilir, otomatik silme |
| Erişim | Web arayüzü, API üzerinden | Runner tarafından otomatik kullanılır |
| Dal ile bağlantı | Doğrudan bağlantı yok (açıkça belirtilmedikçe) | Genellikle dal ile bağlantılıdır, izolasyon için |
Böylece, artefaktlar derlemenin çıktı verileri iken, önbellek derlemeyi hızlandırmak için tekrar kullanılabilir bileşenlerdir.
job_example:
stage: build
script:
- echo "Derleme ve test..."
- mkdir build
- echo "Derleme sonucu" > build/result.txt
- echo "Bağımlılıkların kurulumu"
cache:
paths:
- dependency_dir/ # bağımlılıkların bulunduğu klasör, önbelleğe alınacak
artifacts:
paths:
- build/ # build klasörü artefakt olacak