Sobes.tech
Middle

GitLab CI'yi birden fazla derleme aşaması arasında veri saklamak için nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

GitLab CI'de, derler arasında veri saklamak için artefaktlar kullanılır. Bunlar, bir aşamada oluşturulan ve sonraki aşamalarda erişilebilen dosya veya dizinlerdir.

.gitlab-ci.yml içindeki yapı şu şekildedir:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Derleme sonucu" > build_output.txt # Dosya oluştur
  artifacts:
    paths: # Hangi dosya/dizinlerin saklanacağını belirtir
      - build_output.txt
    expire_in: 1 week # Artefaktların saklanma süresi

test_job:
  stage: test
  script:
    - cat build_output.txt # Önceki aşamadan dosyaya erişim
    - npm test
  needs: # Önceki aşamaya bağımlılığı belirtir
    - build_job

deploy_job:
  stage: deploy
  script:
    - deploy_script.sh
  needs:
    - test_job

Anahtar öğeler:

  • artifacts: Aşama tamamlandıktan sonra hangi dosya veya dizinlerin saklanacağını belirler.
  • paths: Artefakt haline gelecek dosya veya dizinlerin yolları listesi.
  • expire_in: Artefaktların ne kadar süre erişilebilir olacağını belirler.
  • needs: Mevcut aşamanın önceki aşamaya olan bağımlılığını açıkça belirtir. GitLab CI, belirtilen aşamalardan artefaktları otomatik olarak indirir.

needs olmadan, GitLab CI, aynı veya daha erken aşamadaki tüm önceki aşamalardan artefaktları indirir ki bu verimsiz olabilir. needs ile açıkça bağımlılık belirtmek, hangi artefaktların indirileceğini daha hassas şekilde kontrol eder.

Ayrıca, bağımlılıkları saklamak için önbellek (cache) kullanılabilir, örneğin yüklenmiş paketler gibi, ancak bu, tekrar eden derlemeleri hızlandırmak içindir, bir aşamadan diğerine sonuç aktarmak için değil. Artefaktlar, aşamalar arasında çıktı verilerini aktarmanın ana mekanizmasıdır.