IHS Strategic
Tüm Blog Yazıları
HowTo10 Eylül 2026•2 dk okuma

CI/CD Pipeline Kurulumu: Otomatik Test ve Canlıya Alma Rehberi

Modern web projelerinde manuel dağıtım hatalarını sıfırlayan, test ve canlıya alma süreçlerini otomatikleştiren CI/CD pipeline kurulum rehberi.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Geliştirmede CI/CD Neden Zorunlu?

Manuel FTP yüklemeleri ve sunucuda doğrudan kod düzenleme pratikleri geride kaldı. Modern web standartlarında kod kalitesi, hız ve kararlılık esastır. Bir dijital ajans veya yazılım ekibi için CI/CD (Continuous Integration / Continuous Deployment) süreçleri; insan hatasını ortadan kaldırır, testleri standartlaştırır ve deployment süresini dakikalara indirir.

Temel Kavramlar

  • Continuous Integration (CI): Geliştiricilerin kod değişikliklerini ana dala (main branch) sık aralıklarla entegre etmesi, her entegrasyonda otomatik test ve derleme (build) çalıştırılmasıdır.
  • Continuous Delivery (CD): Kodun testleri geçtikten sonra her an canlı ortama çıkabilecek şekilde otomatik olarak paketlenmesidir.
  • Continuous Deployment (CD): Testleri geçen kodun insan müdahalesi olmadan doğrudan canlı sunucuya aktarılmasıdır.

Adım Adım GitHub Actions ile Pipeline Kurulumu

Adım 1: Proje Dizininde İş Akışı Tanımlama

Proje kök dizininde .github/workflows/deploy.yml dosyası oluşturun:

name: CI/CD Pipeline

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test-and-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Node.js Kurulumu
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - name: Bağımlılıkları Yükle
        run: npm ci
      - name: Linter Kontrolü
        run: npm run lint
      - name: Testleri Çalıştır
        run: npm test
      - name: Build Al
        run: npm run build

Adım 2: Canlıya Alma (Deploy) Adımını Ekleme

SSH ile sunucuya bağlanıp güncel kodu çeken veya Docker image basan deployment bloğunu iş akışına bağlayın:

  deploy:
    needs: test-and-build
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - name: SSH ile Canlıya Al
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          script: |
            cd /var/www/app
            git pull origin main
            npm ci --production
            pm2 reload app

Sektörel Trendler ve En İyi Pratikler

  • Secrets Yönetimi: API anahtarlarını, SSH keyleri kesinlikle koda gömmeyin. GitHub Secrets veya Vault kullanın.
  • Küçük ve Sık Commitler: Çatışmaları (merge conflicts) önlemek için günde birden fazla entegrasyon yapın.
  • Zero-Downtime Deployment: Canlı ortamda kesintiyi önlemek için Blue/Green veya Rolling deployment stratejileri tercih edin.

İpucu: Pipeline çalışma süresi uzadıkça geliştirici verimi düşer. Bağımlılıkları önbelleğe (cache) alarak pipeline süresini %60 oranında kısaltabilirsiniz.