Sobes.tech
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.yml yapı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