Sürekli Entegrasyon (CI)

Geliştiricilerin kod değişikliklerini günde birden fazla kez ortak bir depoya birleştirdiği ve her birleştirmenin otomatik olarak doğrulandığı yazılım geliştirme pratiği.

CI, 1991'de Grady Booch tarafından formüle edilmiş ve Kent Beck tarafından Extreme Programming'in bir parçası olarak popülerleştirilmiştir. Tipik pipeline: tetikleyici → build → testler → lint/tarama → rapor. Platformlar: GitHub Actions, GitLab CI/CD, Jenkins.

        graph LR
  Center["Sürekli Entegrasyon (CI)"]:::main
  Rel_parallelism["parallelism"]:::related -.-> Center
  click Rel_parallelism "/terms/parallelism"
  Rel_agile_methodology["agile-methodology"]:::related -.-> Center
  click Rel_agile_methodology "/terms/agile-methodology"
  Rel_raid["raid"]:::related -.-> Center
  click Rel_raid "/terms/raid"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5 yaşındaki gibi açıkla

CI, her matematik problemini çözdükten sonra ödevini kontrol eden akıllı bir öğretmen gibidir. Ay sonunda ilk sayfadaki hatayı fark etmek yerine, saniyeler içinde öğrenip hemen düzeltirsin.

🤓 Expert Deep Dive

Etkili CI, test piramidine (çok birim testi, az E2E) dayanır ve Trunk-Based Development ile birleştirildiğinde en iyi çalışır. CI, CD'nin (Sürekli Teslimat/Dağıtım) ön koşuludur.

❓ Sık sorulan sorular

What is the difference between CI and CD?

CI (Continuous Integration) automatically builds and tests code on every commit, ensuring the codebase is always in a working state. CD (Continuous Delivery or Deployment) goes further, automatically delivering or deploying that verified code to staging or production environments.

What is 'integration hell'?

Integration hell occurs when developers work on separate branches for a long time and then try to merge everything at once. The resulting merge conflicts and hidden incompatibilities can take days or weeks to resolve. CI prevents this by integrating small changes frequently.

Do I need CI for a solo project?

It's highly recommended even for solo projects. CI automatically runs your tests on every commit, catching regressions you might miss, and platforms like GitHub Actions offer generous free tiers.

📚 Kaynaklar