CI/CD hattı (pipeline) nasıl kurulur? Adım adım kurulum rehberi
Beceri rehberi

CI/CD hattı (pipeline) nasıl kurulur? Adım adım kurulum rehberi

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

CI/CD hattı kurulumu: derleme, test, konteyner, çok ortamlı dağıtım ve güvenlik adımları; GitHub Actions ve GitLab için örnek akış ve sık hatalar.

CI/CD nedir, neyi çözer?

CI/CD, yazılım değişikliklerinin otomatik olarak derlenmesi, test edilmesi ve ortamlara dağıtılması için kurulan bir hat anlamına gelir. Sürekli entegrasyon (CI), geliştiricilerin kodu sık sık ortak depoya birleştirmesini ve her birleştirmede otomatik derleme ile testlerin çalışmasını ifade eder. Sürekli teslimat ya da dağıtım (CD) ise başarılı derlemenin güvenilir ve tekrarlanabilir biçimde ortamlara taşınmasıdır.

Çözdüğü sorun, elle yapılan işlemlerin yavaşlığı ve hataya açıklığıdır. "Benim bilgisayarımda çalışıyordu" cümlesi, derleme ve testin herkesten bağımsız, ortak bir ortamda çalışmasıyla azalır. Dağıtım artık bir kişinin hafızasındaki adımlar dizisi değil, kayıt altındaki, tekrar edilebilir bir süreçtir. Sonuçta daha küçük, daha sık ve daha az riskli sürümler yayınlamak mümkün hale gelir.

Adım adım CI/CD hattı nasıl kurulur?

Her takımın hattı farklı olsa da kurulum genellikle şu sırayı izler.

  • Kaynak kontrol düzeni: Dal stratejisi netleştirilir; hat, birleştirme isteklerinde ve ana dalda tetiklenecek şekilde tanımlanır.
  • Derleme adımı: Bağımlılıklar kurulur, uygulama derlenir; aynı komut herkes için aynı sonucu vermelidir.
  • Otomatik testler: Birim testlerle başlanır, ardından entegrasyon ve uçtan uca testler eklenir. Başarısız test hattı durdurur.
  • Kalite ve güvenlik kapıları: Kod analizi, bağımlılık ve imaj taraması gibi kontroller hatta bağlanır.
  • Paketleme: Uygulama konteyner imajı ya da paket olarak üretilir ve bir kayıt defterinde saklanır.
  • Dağıtım: Önce test ya da hazırlık ortamına, onayla veya otomatik olarak üretim ortamına çıkılır.
  • İzleme ve geri dönüş: Dağıtım sonrası sağlık kontrolü yapılır; sorun varsa önceki sürüme dönülebilir olmalıdır.

GitHub Actions ve GitLab ile pipeline nasıl tasarlanır?

Hem GitHub Actions hem GitLab CI/CD, hat tanımını kod deposunun içinde, sürüm kontrolü altında tutmanıza izin verir. Bu "kod olarak hat" yaklaşımı, hattın değişikliklerinin de gözden geçirilebilir ve geri alınabilir olmasını sağlar.

İki platformda da mantık benzerdir: bir tetikleyici, birbirine bağlı aşamalar ve bu aşamaları çalıştıran çalışma ortamları vardır. Tekrar eden adımlar, yeniden kullanılabilir iş akışlarına ya da şablonlara taşınarak çoğaltılmaz. Çalıştırıcı (runner) yönetimi, önbellekleme ve paralel çalıştırma ise hat süresini belirleyen ana unsurlardır. Platforma özgü yazım kuralları için kullandığınız aracın güncel resmî dokümantasyonuna bakmanız gerekir; mantığı bir kez kavramak, platformlar arası geçişi kolaylaştırır.

Çok ortamlı dağıtım ve güvenlik nasıl ele alınır?

Geliştirme, test, hazırlık ve üretim gibi ortamlar arasında aynı paketin ilerlemesi, "bir kez derle, her yere dağıt" ilkesidir. Her ortam için ayrı derleme yapmak, test edilenin üretimde çalışanla aynı olmamasına yol açar. Ortama özgü ayarlar paketin dışında, yapılandırma olarak tutulur.

Gizli bilgiler (parola, anahtar, jeton) kod deposuna yazılmaz; platformun gizli değer yönetimi kullanılır. Dağıtım izinleri en az ayrıcalık ilkesiyle sınırlanır, üretim dağıtımı için onay adımı konulabilir. Güvenlik taramalarını hattın sonuna değil erken aşamalarına koymak, sorunları daha ucuza yakalar. Dağıtım stratejisi olarak aşamalı yayın ya da mavi-yeşil gibi yaklaşımlar riski azaltır.

Örnek senaryo: küçük bir web uygulaması için hat

Örneğin küçük bir ekip, bir web uygulamasını haftalık elle dağıtıyor ve her seferinde bir şey ters gidiyor. Ekip önce yalnızca birleştirme isteklerinde çalışan bir hat kurar: bağımlılıkları kurar, derler ve birim testleri koşar. Başarısız bir istek ana dala alınamaz hale gelir.

İkinci aşamada ana dala birleşen her değişiklik için konteyner imajı üretilir ve test ortamına otomatik gönderilir. Üçüncü aşamada üretime çıkış, onay adımı arkasında tek tıkla yapılır ve sağlık kontrolü başarısız olursa önceki sürüme dönüş otomatik çalışır. Birkaç haftada dağıtım korkulan bir olay olmaktan çıkar, rutine dönüşür.

Başlangıçtan ileri düzeye öğrenme yolu

Başlangıçta Git'in temelleri, dal ve birleştirme isteği düzeni ile bir platformun basit hat tanımı öğrenilir. Orta düzeyde test otomasyonu, konteyner ve imaj yönetimi, çok ortamlı dağıtım stratejileri, yeniden kullanılabilir iş akışları gelir. İleri düzeyde güvenlik ve uyumluluk entegrasyonu, çalıştırıcı yönetimi ve maliyet optimizasyonu, gözlemlenebilirlik, GitOps yaklaşımı ve olgunluk değerlendirmesi yer alır.

En etkili öğrenme yolu, gerçek bir proje üzerinde hattı küçük parçalar halinde büyütmektir. Her hafta bir aşama ekleyip ne kazandırdığını ölçmek (örneğin hata yakalama süresi) hem motivasyonu hem öğrenmeyi artırır. DevOps kültürü, yani geliştirme ve operasyonun ortak sorumluluk alması, araç bilgisi kadar önemlidir.

Sık yapılan hatalar

  • Yavaş ve kırılgan hat: Her değişiklikte uzun süren, rastgele başarısız olan testler ekibi hattı görmezden gelmeye iter.
  • Hat başarısızlığını normal saymak: Kırmızı hat hemen ele alınmazsa güven kaybolur.
  • Her ortam için ayrı derleme: Test edilen ile yayınlanan farklı olur.
  • Gizli bilgileri depoya yazmak: Sızıntı riski doğurur.
  • Geri dönüş planı olmamak: Sorunlu sürümü hızla geri alamamak dağıtım korkusunu büyütür.
  • Hattı bir kişiye bırakmak: Bilgi tek kişide kalırsa hat kodu da ekip tarafından gözden geçirilmelidir.
  • Güvenliği en sona bırakmak: Geç bulunan zafiyetin düzeltme maliyeti yüksektir.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

CI/CD Pipeline Tasarımı (GitHub Actions) programı GitHub Actions temelleri, sürekli entegrasyon hattı, konteyner ve imaj yönetimi, çok ortamlı dağıtım stratejileri, yeniden kullanılabilir iş akışları, güvenlik ve uyumluluk entegrasyonu ile gözlemlenebilirlik ve optimizasyon konularını içerir. CI/CD Pipeline Tasarımı (GitLab) ise GitLab CI/CD mimarisi, gelişmiş pipeline tasarımı, runner yönetimi, kalite kapıları, güvenlik tarama araçları, deployment ve ortam yönetimi ile GitOps konularını kapsar.

İlgili Mindset programı

CI/CD Pipeline Tasarımı (GitHub Actions)

Sık sorulanlar

Sık sorulan sorular

CI ile CD arasındaki fark nedir?

CI, kod değişikliklerinin sık sık birleştirilip otomatik derleme ve testlerden geçirilmesidir. CD ise başarılı değişikliklerin ortamlara otomatik ya da onaylı biçimde taşınmasıdır. CI kalite güvencesinin ilk halkası, CD ise bunu çalışan sisteme ulaştıran halkadır. İkisi birlikte kullanıldığında hızlı ve güvenli teslimat sağlanır.

CI/CD için hangi araç seçilmeli?

Seçim, kod depoladığınız platforma, ekibin tecrübesine ve kurumsal gereksinimlere bağlıdır. GitHub Actions ve GitLab CI/CD kod deposuyla entegre çalışır; başka çözümler de mevcuttur. Araçtan çok hat tasarımı ilkeleri önemlidir: tekrarlanabilirlik, hızlı geri bildirim ve güvenli dağıtım. Ekibin mevcut deneyimi ve entegrasyon kolaylığı çoğu zaman belirleyicidir.

Pipeline ne kadar sürede kurulur?

Basit bir derleme ve test hattı kısa sürede kurulabilir; olgun bir hat ise ekip pratiğiyle birlikte aşama aşama gelişir. Önemli olan her şeyi bir seferde kurmak değil, önce en değerli adımı otomatikleştirip ardından genişletmektir. Küçük başlamak, ekibin hatta güvenmesini de sağlar.

Test olmadan CI/CD kurulabilir mi?

Teknik olarak derleme ve dağıtım otomatikleştirilebilir, ancak testler olmadan hat hataları hızlı biçimde canlıya taşır. CI/CD'nin asıl değeri, değişikliği güvenle yayınlayabilmektir. Küçük de olsa birim testlerle başlamak ve zamanla kapsamı artırmak sağlıklı bir yaklaşımdır. Testsiz hat, hızlı ama güvensiz dağıtım demektir; en azından temel doğrulamaları ekleyin.

DevOps ile CI/CD aynı şey mi?

Hayır. DevOps, geliştirme ve operasyon ekiplerinin ortak sorumluluk, otomasyon ve sürekli iyileştirme anlayışıyla çalışmasını tanımlayan geniş bir kültür ve uygulama bütünüdür. CI/CD ise bu yaklaşımın en somut uygulamalarından biri olan otomasyon hattıdır.

CI/CD Pipeline Nasıl Kurulur? Adım Adım Rehber