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.