Blog'a Dön
DevOps3 min read15 Aralık 2024

CI/CD Pipeline Nasıl Kurulur? GitHub Actions ile Pratik Rehber

GitHub Actions ile CI/CD pipeline kurulumu. Test, build, Docker ve Kubernetes'e otomatik deploy. Gerçek bir Next.js projesi üzerinden adım adım.

CI/CDGitHub ActionsDevOpsDockerKubernetesotomasyon

CI/CD Nedir?

CI (Continuous Integration): Her kod değişikliğinde otomatik test ve build yapılması. CD (Continuous Deployment): Başarılı build'lerin otomatik olarak sunucuya deploy edilmesi.

CI/CD olmadan geliştirme süreci şöyle görünür: "Kod yaz → Manuel test → FTP ile yükle → Dua et." CI/CD ile: "Kod push et → Her şey otomatik çalışır."

GitHub Actions ile CI/CD

GitHub Actions, GitHub'a entegre ücretsiz bir CI/CD platformudur. Özellikle açık kaynak projeler için tamamen ücretsizdir.

Temel Kavramlar

  • Workflow → Pipeline tanımı (YAML dosyası)
  • Job → Pipeline'daki görev grubu
  • Step → Görev içindeki adımlar
  • Runner → Kodun çalıştığı sanal makine

Adım Adım CI/CD Pipeline

Aşağıdaki örnek, bir Next.js uygulamasını test edip Docker Hub'a push eden ve ardından Kubernetes'e deploy eden tam bir pipeline'dır.

# .github/workflows/deploy.yml
name: Build & Deploy

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

env:
  IMAGE_NAME: vivayazilim/web-app

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run type check
        run: npm run type-check

      - name: Run tests
        run: npm test

  build-and-push:
    name: Build Docker Image
    runs-on: ubuntu-latest
    needs: test
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4

      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Build and push
        uses: docker/build-push-action@v5
        with:
          push: true
          tags: |
            ${{ env.IMAGE_NAME }}:latest
            ${{ env.IMAGE_NAME }}:${{ github.sha }}

  deploy:
    name: Deploy to Kubernetes
    runs-on: ubuntu-latest
    needs: build-and-push
    steps:
      - uses: actions/checkout@v4

      - name: Set up kubectl
        uses: azure/setup-kubectl@v3

      - name: Configure kubeconfig
        run: |
          mkdir -p ~/.kube
          echo "${{ secrets.KUBECONFIG }}" > ~/.kube/config

      - name: Deploy
        run: |
          kubectl set image deployment/web-app \
            web-app=${{ env.IMAGE_NAME }}:${{ github.sha }}
          kubectl rollout status deployment/web-app

Secrets Yönetimi

GitHub Actions'ta hassas bilgileri (API key, şifre, kubeconfig) Secrets olarak saklayın:

  1. Repo → Settings → Secrets and variables → Actions
  2. New repository secret → İsim ve değer girin
  3. Workflow'da ${{ secrets.SECRET_NAME }} ile kullanın
# Doğru kullanım
password: ${{ secrets.DOCKER_PASSWORD }}

# YANLIŞ — asla kodda gömülü şifre bırakmayın
password: "my-super-secret-password"  # ❌

PR'larda Otomatik Test

Pull Request'lerde testlerin otomatik çalışması için:

on:
  pull_request:
    branches: [main, develop]

Bu ayar sayesinde PR'lar merge edilmeden önce testler yeşil olmak zorundadır.

Deployment Stratejileri

| Strateji | Avantaj | Dezavantaj | |---|---|---| | Rolling Update | Zero-downtime | Geri alma yavaş | | Blue-Green | Anında geri alma | 2x kaynak | | Canary | Kademeli trafik | Karmaşık |

Küçük takımlar için Rolling Update ile başlamanızı öneririz.

Maliyetler

| Platform | Bedava Limit | Ücretli | |---|---|---| | GitHub Actions | 2.000 dk/ay | $0.008/dk | | GitLab CI | 400 dk/ay | $0.005/dk | | CircleCI | 6.000 dk/ay | $15/kullanıcı |

Çoğu KOBİ için GitHub Actions bedava limiti yeterlidir.

Sonuç

CI/CD kurulum yatırımı; manuel deploy hatalarını, üretim ortamı sürprizlerini ve "dün çalışıyordu" krizlerini ortadan kaldırır. Viva Yazılım DevOps danışmanlığı ile pipeline kurulumunu birlikte yapabiliriz.

Bu konuda uzman desteği alın

Viva Yazılım ekibi 30 yıllık deneyimiyle yanınızda.

Bizi AraDemo Al