Home / Rehberler ve Nasıl Yapılır? / GitLab CI’de Extends, Anchor, Include ve Trigger Rehberi

GitLab CI’de Extends, Anchor, Include ve Trigger Rehberi

GitLab CI'de Extends, Anchor, Include ve Trigger Rehberi

GitLab CI/CD Dosyalarında Ustalık: extends, anchor, include ve trigger Yapıları Ne İşe Yarar?

Modern yazılım projelerinde otomasyon artık vazgeçilmez bir standart. GitLab CI/CD sistemi ise bu otomasyonu sağlamanın en güçlü yollarından biri. Ancak .gitlab-ci.yml dosyaları büyüdükçe karmaşıklık da artar. Neyse ki GitLab, bu dosyaları daha okunabilir, modüler ve sürdürülebilir hâle getirmek için bize dört güçlü araç sunuyor:

🔹 extends
🔹 YAML anchor yapıları (& ve *)
🔹 include
🔹 trigger

Bu rehberde bu yapıların her birini detaylıca inceliyor, nasıl çalıştıklarını örneklerle anlatıyoruz.


🔁 1. YAML Anchor (& ve *) — Tekrara Son

YAML, aynı yapıların tekrar tekrar yazılmasını engellemek için “anchor” adında bir özellik sunar. Bu sayede örneğin aynı image, before_script ya da tags gibi ayarları her işte (job) tekrar yazmak yerine, bir yerde tanımlayıp diğer yerlerde kullanabiliriz.

✅ Örnek:

yamlKodu kopyala.defaults: &defaults
  image: alpine:3.18
  before_script:
    - echo "Setup tamamlandı"

job1:
  <<: *defaults
  script:
    - echo "İlk job"

job2:
  <<: *defaults
  script:
    - echo "İkinci job"

🧠 Anchor’lar yalnızca aynı dosya içinde çalışır ve YAML tarafından işlenir, GitLab’a özel değildir.


🧬 2. extends — İşleri Kalıtımla Kolaylaştır

GitLab’a özel bir özellik olan extends, bir job’ın başka bir job’dan kalıtım almasını sağlar. Anchor’dan farkı, işlerin isimlerini temel alarak YAML dışında da derinlemesine birleşim yapabilmesidir.

✅ Örnek:

yamlKodu kopyala.template:
  image: node:18
  tags: [shared]
  before_script:
    - npm install

lint:
  extends: .template
  script:
    - npm run lint

🔎 extends, YAML anchor’lara göre daha güçlüdür ve birden fazla yapıdan kalıtım almak da mümkündür.


📂 3. include — Büyük Dosyaları Parçalayarak Yönet

Projeler büyüdükçe .gitlab-ci.yml dosyaları da şişmeye başlar. Bu durumda yapıyı daha okunabilir kılmak için GitLab’ın sunduğu include özelliğini kullanabiliriz. Böylece ana dosyada sadece include tanımları olurken detaylar alt dosyalara taşınabilir.

✅ Örnek:

yamlKodu kopyalainclude:
  - local: 'ci/build.yml'
  - local: 'ci/test.yml'
  - remote: 'https://example.com/deploy.yml'

📦 local, project, template ve remote gibi farklı kaynaklardan dosya çağırabilirsiniz.


🚀 4. trigger — Alt Pipeline’lar ile Süreci Parçala

Bazı durumlarda pipeline içinde başka bir pipeline’ı tetiklemek isteyebilirsiniz. Örneğin her modülün kendi bağımsız pipeline’ı olabilir. Bu gibi durumlarda trigger komutu devreye girer.

✅ Statik Trigger Örneği:

yamlKodu kopyalatrigger-deploy:
  trigger:
    include: .gitlab/deploy.yml
    strategy: depend

✅ Dinamik Trigger Örneği:

yamlKodu kopyalagenerate-pipeline:
  script:
    - ./generate-ci.sh > child.yml
  artifacts:
    paths: [child.yml]

run-generated:
  trigger:
    include:
      artifact: child.yml
      job: generate-pipeline

⚙️ strategy: depend sayesinde alt pipeline bitmeden ana pipeline tamamlanmaz.


🎛️ BONUS: inputs ile Daha Güvenli ve Parametreli Templateler

GitLab’ın yeni inputs özelliği ile include edilen CI şablonlarına parametreler tanımlayabilirsiniz. Bu, özellikle şablonları daha kontrollü ve kullanıcı dostu hale getirir.

✅ Örnek:

yamlKodu kopyalaspec:
  inputs:
    deploy_env:
      type: string
      options: ["dev", "staging", "prod"]

📌 Bu yapı, şablonların yanlış kullanılmasını engeller, belirli seçenekler sunar ve daha güvenli iş akışları sağlar.


📚 Sonuç: Temiz ve Güçlü GitLab CI Dosyaları İçin Altın Kurallar

✅ Anchor ile tekrarları azalt
✅ Extends ile kalıtım yap
✅ Include ile dosyaları böl ve yönetimi kolaylaştır
✅ Trigger ile pipeline’ları parçalara ayır
✅ Inputs ile şablonlara akıllı parametre ekle

Tüm bu yapılar bir araya geldiğinde, hem ekip içinde okunabilirliği yüksek, hem de CI/CD sürecinde esnekliği en üst seviyeye çıkaran bir yapı kurmuş olursunuz.

🔗 İlginizi Çekebilir:
🔍 Benzer içerikler için göz atın:
➡️ Web Geliştirme ve Kodlama kategorisinde daha fazlası sizi bekliyor.

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hakkımızda | Gizlilik Politikası | İletişim

© 2025 TeknoRead.com | Tüm Hakları Saklıdır.