CI/CD
Sürekli Entegrasyon / Sürekli Teslimat
Kısaca
CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
CI/CD nedir?
CI/CD, birbiriyle ilişkili iki pratiği bir araya getirir. Sürekli entegrasyon (CI), geliştiricilerin değişikliklerini paylaşılan bir branch'e sık, en az günde bir kez birleştirmesi ve her değişikliğin otomatik olarak bir derleme ve test çalıştırmasını tetiklemesi demektir. Sürekli teslimat (CD) bunu bir adım ileri götürür: testleri geçen her değişiklik otomatik olarak yayına hazırlanır ve her an dağıtılabilir.
İşi, kodla birlikte saklanan bir yapılandırma dosyasında tanımlanan otomatik adımlar dizisi olan bir pipeline (hat) yapar. Tipik bir pipeline bağımlılıkları yükler, linter'ları ve testleri çalıştırır, uygulamayı ya da bir konteyner imajını derler ve bir staging ya da canlı ortama dağıtır. Yaygın araçlar arasında GitHub Actions, GitLab CI/CD, Jenkins, CircleCI ve Azure Pipelines bulunur.
CI/CD'yi her istasyonunda kalite kontrolü olan bir montaj hattı gibi düşünün: her küçük değişiklik otomatik olarak denetlenir ve sorunlar haftalar sonra değil, ortaya çıktıktan dakikalar sonra yakalanır. Bu, sürümleri nadir ve stresli olaylar olmaktan çıkarıp rutin ve düşük riskli hale getirir.
CD kısmının sıkça karıştırılan iki anlamı vardır. Sürekli teslimatta canlıya alınacak son sürümü hâlâ bir kişi onaylar; sürekli dağıtımda (continuous deployment) ise pipeline'ı geçen her değişiklik hiçbir elle müdahale olmadan otomatik olarak yayına girer. Her ikisi de güvenilir bir otomatik test takımına dayanır.
Bir bakışta
Önemli noktalar
- CI, paylaşılan kod tabanına birleştirilen her değişikliği otomatik olarak derler ve test eder.
- CD, kodu her zaman yayına hazır tutar ya da otomatik olarak yayınlar.
- Pipeline'lar, kodun yanında saklanan yapılandırma dosyalarında tanımlanır.
- Sürekli teslimatta elle onay adımı vardır; sürekli dağıtımda yoktur.
- CI/CD, DevOps'un temel pratiklerinden biridir.
Örnek
# .github/workflows/ci.yml: run the tests on every push and pull request
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 24
- run: npm ci
- run: npm testSık sorulan sorular
Sürekli teslimat ile sürekli dağıtım arasındaki fark nedir?
Sürekli teslimatta her değişiklik otomatik olarak test edilir ve yayına hazır hale getirilir, ancak canlıya ne zaman dağıtılacağına bir kişi karar verir. Sürekli dağıtımda ise pipeline'ı geçen her değişiklik otomatik olarak canlıya alınır.
CI/CD pipeline'ı nedir?
CI/CD pipeline'ı, kod her değiştiğinde çalışan derleme, test ve dağıtım gibi otomatik adımlar dizisidir. Genellikle kodla aynı repository'de saklanan bir yapılandırma dosyasında tanımlanır.
CI/CD ile DevOps aynı şey midir?
Hayır. DevOps, geliştirme ile operasyonu birleştiren daha geniş bir kültürdür; CI/CD ise kodun nasıl test edilip yayınlanacağını otomatikleştiren en önemli pratiklerinden biridir.
İlgili sayfalar
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- Pull RequestSürüm Kontrolü, s. 32Pull request, bir branch'teki değişiklikleri başka bir branch'e birleştirme önerisidir; kod birleşmeden önce ekibe inceleme, tartışma ve test alanı sunar.
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- GitHub ActionsDevOps ve Bulut, s. 19GitHub Actions, GitHub'ın yerleşik otomasyon platformudur; depodaki YAML iş akışları push ya da pull request olduğunda test, derleme ve dağıtım çalıştırır.
- JenkinsDevOps ve Bulut, s. 26Jenkins, yazılımı pipeline'larla derleyen, test eden ve dağıtan açık kaynaklı bir otomasyon sunucusudur; en eski ve en yaygın CI/CD araçlarından biridir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin