dev-tools
Sözlük ↗Sürekli Entegrasyon / Sürekli Dağıtım (CI/CD)
CI/CD, Sürekli Entegrasyon (Continuous Integration) ve Sürekli Dağıtım (Continuous Deployment) anlamına gelir (bazen biraz daha muhafazakâr bir varyant olan Sürekli Teslimat - Continuous Delivery). Sürekli Entegrasyon, paylaşılan bir depoya gönderilen her kod değişikliğinin otomatik olarak projeyi derleyen ve otomatik testlerini çalıştıran bir ardışık düzeni (pipeline) tetiklemesi anlamına gelir; böylece entegrasyon sorunları günler sonra birkaç kişinin değişiklikleri çakıştığında keşfedilmek yerine dakikalar içinde yakalanır. Sürekli Dağıtım, tüm kontrollerden geçen bir değişikliğin manuel bir adım olmadan otomatik olarak üretime yayınlanmasıyla bunu genişletir; Sürekli Teslimat aynı fikirdir ancak sonunda manuel bir "yayınla" kapısı vardır. AI/SaaS geliştiricileri için önemi: CI/CD, hızlı ve güvenli yinelemeyi mümkün kılan omurgadır — bu olmadan, ekipler ya nadiren yayın yapar (riski büyük, korkutucu yayınlarda biriktirir) ya da dikkatsizce yayın yapar (üretimi düzenli olarak bozar). Ödeme yapan müşterileri olan bir SaaS ürünü için, güvenilir bir ardışık düzen, Cuma yayınlarından korkmak yerine güvenle günde birden çok kez dağıtım yapmanızı sağlayan şeydir. Aynı zamanda AI tarafından üretilen kodun güvenlik ağını aldığı katmandır: bir AI ajanı bir değişiklik önerebilir, ancak değişikliğin kullanıcılara ulaşmadan önce hiçbir şeyi bozmadığını nesnel olarak kanıtlayan CI'dır. Nasıl çalışır: bir CI/CD ardışık düzeni, aşamaları açıklayan yapılandırma olarak tanımlanır (örneğin GitHub Actions, GitLab CI veya CircleCI'da bir YAML dosyası) — bağımlılıkları yükle, linting yap, birim testlerini çalıştır, entegrasyon testlerini çalıştır, bir konteyner görüntüsü oluştur, hazırlık ortamına dağıt, duman testleri çalıştır, üretime dağıt. Her aşama, ardışık düzenin bir sonrakine ilerlemesi için geçmelidir; bir başarısızlık birleştirmeyi veya dağıtımı engeller ve ekibi bilgilendirir. Modern ardışık düzenler ayrıca kod inceleme onayı ve test kapsamı eşikleri veya güvenlik taramaları gibi otomatik kontroller üzerinde de geçit uygular. Uygulamalı örnek: bir geliştirici yeni bir `/api/invoices/export` uç noktası ekleyen bir çekme isteği açar. Dalı göndermek bir GitHub Actions iş akışını tetikler: 1. Aşama npm bağımlılıklarını yükler ve ESLint çalıştırır (20 saniyede geçer); 2. Aşama, CSV dışa aktarmanın doğru başlıklara sahip olduğunu doğrulayan yeni bir test içeren Jest birim test paketini çalıştırır (geçer); 3. Aşama bir Docker görüntüsü oluşturur ve yeni uç noktaya gerçekten ulaşan bir entegrasyon testi için bunu bir Postgres test konteynerine karşı çalıştırır (geçer); 4. Aşama PR'de yeşil bir onay işareti yayınlar. Bir ekip arkadaşı incelemeyi onaylar, PR `main`'e birleştirilir; bu da üretim görüntüsünü oluşturan, konteyner kayıt defterine gönderen ve Kubernetes kümesine kademeli bir güncellemeyle dağıtan ikinci bir iş akışını tetikler — hiç kimse bir sunucuya SSH ile bağlanmadan.
İlgili terimler