Ana içeriğe geç

Sürekli Entegrasyon

İngilizcesi
Continuous Integration
Okunuşu
kıntinyuıs intıgreyşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/continuous-integration

Kısaca

Sürekli entegrasyon, kod değişikliklerini ana branch'e en az günde bir kez birleştirip her birleştirmeyi otomatik derleme ve testlerle doğrulama pratiğidir.

Sürekli entegrasyon (CI) nedir?

Kısaca CI olarak anılan sürekli entegrasyon, herkesin kendi çalışmasını çoğu zaman mainline denen paylaşılan ana branch'e en az günde bir kez birleştirdiği bir geliştirme pratiğidir. Her birleştirme otomatik bir derleme ve test çalıştırmasını tetikler; böylece ekip, birleşen kodun hâlâ çalışıp çalışmadığını dakikalar içinde öğrenir. Pratik, 1990'ların sonunda Extreme Programming ile adını aldı ve yayıldı; Martin Fowler'ın bu konudaki makalesi de onu geniş kitlelere tanıttı.

Uygulamada GitHub Actions, GitLab CI ya da Jenkins gibi bir CI servisi depoyu izler. Biri bir commit push'ladığında ya da bir pull request açtığında kodu temiz bir makinede çeker, bağımlılıkları kurar, projeyi derler, linter'ları ve otomatik testleri çalıştırır ve pull request'e yeşil ya da kırmızı bir durum bildirir. Kırmızı bir build ekibin en önemli önceliğidir: onu bozan kişi, başka hiçbir şey birleştirilmeden önce sorunu düzeltir ya da değişikliği geri alır. Geri bildirimi hızlı tutmak için ekipler yaklaşık on dakikalık bir build hedefler; bu hedef de Extreme Programming'den gelir.

Birlikte tek bir rapor yazan birkaç kişiyi düşünün. Her biri bir ay boyunca tek başına yazar ve her şey teslimden önceki gece birleştirilirse bölümler birbiriyle çelişir, birleştirme de günler sürer; geliştiriciler buna entegrasyon cehennemi (integration hell) der. Herkes kendi sayfalarını her gün ortak taslağa ekler ve bir editör onu hemen okursa çakışmalar küçük kalır ve henüz tazeyken düzeltilir.

Sürekli entegrasyon çoğu zaman sürekli teslimatla ya da yalnızca bir CI aracına sahip olmakla karıştırılır. CI, ana branch'te doğrulanmış kodla biter; sürekli teslimat oradan devralır ve bu kodu her an canlı ortama dağıtılabilir durumda tutar. Haftalarca yaşayan feature branch'lerde bir CI sunucusu çalıştırmak da asıl anlamıyla sürekli entegrasyon değildir: amaç küçük değişiklikleri ana branch'e sık sık entegre etmektir; bu yüzden CI, trunk-based development ile el ele gider.

Önemli noktalar

  • Sürekli entegrasyon, küçük değişiklikleri en az günde bir kez ana branch'e birleştirmek demektir.
  • Her birleştirme, temiz bir makinede otomatik bir derleme ve test çalıştırmasını tetikler.
  • Bozuk bir build, başka bir şey birleştirilmeden önce düzeltilir ya da geri alınır.
  • Hızlı geri bildirim önemlidir: yaklaşık on dakikalık bir build yaygın bir hedeftir.
  • CI kodu doğrular; sürekli teslimat onu yayına hazır tutar.

Örnek

Her pull request'i kontrol eden bir CI iş akışıyaml
# .github/workflows/ci.yml: verify every pull request and every push to main
name: CI
on:
  pull_request:
  push:
    branches: [main]
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - run: npm ci         # install the exact locked versions
      - run: npm run lint   # style and static checks
      - run: npm test       # a failing test turns the check red
      - run: npm run build  # prove the project still builds

Sık sorulan sorular

Sürekli entegrasyon ile sürekli teslimat arasındaki fark nedir?

Sürekli entegrasyon, ana branch'e birleştirilen her değişikliği derler ve test eder. Sürekli teslimat bir adım öteye gider: testleri geçen her build'i kalan testlerden ve ortamlardan geçirir, böylece her an canlı ortama çıkarılabilir.

Geliştiriciler ne sıklıkla entegre etmeli?

En az günde bir kez, çoğu zaman da günde birkaç kez. Birleştirmeler ne kadar küçük ve sık olursa çakışmalar o kadar küçük olur ve build'i hangi değişikliğin bozduğunu bulmak o kadar kolaylaşır.

CI build'i başarısız olursa ne olur?

Ekip bunu en acil iş sayar: build'i bozan kişi onu hızla düzeltir ya da değişikliği geri alır. Branch koruma kuralları da genellikle kontrolleri geçmeyen pull request'lerin birleştirilmesini engeller.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar