CI/CD Pipeline Kurulumu ile Otomatik Test ve Canlıya Alma Süreçleri
CI/CD Pipeline Kurulumu ile Otomatik Test ve Canlıya Alma Süreçleri
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
{ "title": "CI/CD Pipeline Kurulum Rehberi: Otomatik Test ve Canlıya Alma Süreçleri", "slug": "cicd-pipeline-kurulumu-otomatik-test-canliya-alma", "summary": "Modern yazılım geliştirme süreçlerinde CI/CD pipeline kurulumu adımları. Otomatik test, derleme ve sıfır kesintiyle canlıya alma rehberi.", "content": "
Giriş: Modern Yazılım Dağıtımının Temeli
Hızlı ve hatasız yazılım teslimatı, her başarılı dijital strateji için zorunluluktur. CI/CD (Continuous Integration / Continuous Deployment) pipeline süreçleri; kod değişikliklerini otomatik derler, test eder ve prod ortama aktarır. Manuel hata payı sıfıra iner, dağıtım hızı katlanır. Bu rehber, adım adım uçtan uca modern bir pipeline mimarisi kurmanızı sağlar.
1. Hazırlık ve Kaynak Kod Yönetimi
İyi bir pipeline, disiplinli branch yönetimiyle başlar. Git tabanlı Trunk-Based Development veya sadeleştirilmiş GitFlow modeli seçin.
- Ana Dal (main/master): Her zaman üretime hazır, kararlı kod içerir.
- Özellik Dalları (feature branches): Kısa ömürlü dallar. Hızla test edilip ana dala merge edilir.
- Koruma Kuralları (Branch Protection): Testleri geçmeyen veya PR onayı almayan kodun ana dala girmesini engelleyin.
2. CI Aşaması: Otomatik Derleme ve Test
Her git push işleminde devreye giren sürekli entegrasyon hattı oluşturun.
Adım 2.1: Kod Kalitesi ve Güvenlik Taraması (Static Analysis)
Kod derlenmeden önce statik analiz araçlarıyla taranmalıdır:
- Linter kontrolü (ESLint, Flake8, golangci-lint)
- SAST ve güvenlik zaafiyeti taraması (SonarQube, Trivy, Snyk)
Adım 2.2: Otomatik Test Katmanları
Test piramidini pipeline içine doğru sırayla yerleştirin:
- Birim Testleri (Unit Tests): Hızlı çalışır, izole işlevleri doğrular. Pipeline başında çalıştırın.
- Entegrasyon Testleri (Integration Tests): Veritabanı, önbellek ve harici servis bağlantılarını test eder.
- Uçtan Uca Testler (E2E): Kritik kullanıcı akışlarını doğrular (Playwright, Cypress).
Öneri: Test çalışma sürelerini kısaltmak için paralel iş parçacıkları (matrix build) ve bağımlılık önbellekleme (cache) kullanın.
3. CD Aşaması: Otomatik Canlıya Alma Stratejileri
Kod CI aşamasını geçtiğinde artefakt (Docker image, binary paket) üretilir ve canlı ortama aktarılır.
Örnek GitHub Actions Konfigürasyonu
name: CI-CD-Pipeline
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Runtime
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm test -- --coverage
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Production
run: |
echo \"Deploying artifact to cluster...\"
Sıfır Kesinti (Zero-Downtime) Dağıtım Yöntemleri
- Blue-Green Deployment: İki özdeş ortam kullanılır. Trafik anında eski ortamdan yeni ortama yönlendirilir. Rollback anlıktır.
- Canary Deployment: Trafiğin küçük bir yüzdesi (%5-%10) yeni sürüme aktarılır. Metrikler normalse kademeli geçiş yapılır.
- Rolling Update: Pod/sunucular sırayla güncellenir. Minimum kaynak tüketir.
4. Pipeline Yönetiminde Güncel Trendler
Modern DevOps dünyasındaki yeni trendler, altyapı yönetimini tamamen kod tabanlı hale getirir:
- GitOps (ArgoCD, Flux): Uygulama durumu ve altyapı tanımları Git reposunda tutulur. Cluster, repo ile senkronize kalır.
- Pipeline as Code: Tüm dağıtım mantığı versiyonlanabilir YAML dosyalarında saklanır.
- Ephemeral Environments: Her PR için geçici canlı önizleme ortamları otomatik ayağa kaldırılır, PR kapandığında silinir.
Kontrol Listesi
- [ ] Kod format ve linter testleri CI adımına eklendi mi?
- [ ] Hassas veriler (API key, şifre) Secret Manager/Vault ile korunuyor mu?
- [ ] Hatalı dağıtım anında otomatik rollback mekanizması tanımlandı mı?
- [ ] Build artefaktları versiyonlanıp registry'ye gönderiliyor mu?