DevOps11 dk okuma

CI/CD Pipeline Otomasyonu: GitHub Actions

GitHub Actions ile end-to-end CI/CD pipeline kurulumu.

D

DevOps Team

DevOps Engineers

3 Ocak 2025

Modern CI/CD ile DevOps

GitHub Actions, kod repository'niz içinde direkt olarak CI/CD pipeline'ları oluşturmanızı sağlayan güçlü bir otomasyon platformudur. Infrastructure as Code yaklaşımı ile pipeline'larınızı versiyon kontrolü altında tutabilirsiniz.

GitHub Actions Temelleri

name: CI/CD Pipeline

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '18'
        cache: 'npm'
    
    - name: Install dependencies
      run: npm ci
    
    - name: Run tests
      run: npm test
    
    - name: Run linting
      run: npm run lint

Multi-Stage Pipeline

Stage 1: Build & Test

Paralel test execution ile hızlı feedback loop sağlayın. Matrix strategy kullanarak farklı Node versiyonlarında test edin.

Stage 2: Docker Build

Multi-stage Docker build ile optimized image'lar oluşturun. Layer caching ile build sürelerini azaltın.

Stage 3: Deploy to Kubernetes

GitOps yaklaşımı ile Kubernetes deployment'larını otomatikleştirin. Canary deployment ve rollback stratejileri uygulayın.

Advanced Patterns

Matrix Strategy

strategy:
  matrix:
    os: [ubuntu-latest, windows-latest, macos-latest]
    node: [16, 18, 20]
    exclude:
      - os: windows-latest
        node: 16

Reusable Workflows

Common task'ları reusable workflow'lar olarak tanımlayın ve farklı repository'lerde kullanın.

Security Best Practices

  • Secrets Management: GitHub Secrets kullanın, hardcode etmeyin
  • OIDC Authentication: Long-lived credentials yerine temporary tokens
  • Dependency Scanning: Dependabot entegrasyonu
  • Code Scanning: CodeQL ile güvenlik analizi
  • Container Scanning: Trivy veya Snyk ile image scanning

Performance Optimization

💡 Pro Tips:

  • Dependency caching ile build süresini %70 azaltın
  • Matrix builds ile paralel execution
  • Self-hosted runners ile daha hızlı builds
  • Artifact caching ile stage'ler arası veri transferi
  • Conditional steps ile gereksiz işlemleri skip edin

Monitoring & Notifications

- name: Slack Notification
  if: always()
  uses: 8398a7/action-slack@v3
  with:
    status: ${{ job.status }}
    text: 'Deployment ${{ job.status }}'
    webhook_url: ${{ secrets.SLACK_WEBHOOK }}
    
- name: Create Issue on Failure
  if: failure()
  uses: actions/create-issue@v2
  with:
    title: 'Build Failed: ${{ github.workflow }}'
    body: 'Build failed on commit ${{ github.sha }}'

Cost Optimization

TipTasarruf
Conditional runs kullanın~30%
Cache agresif kullanın~50%
Self-hosted runners~70%
Workflow concurrency limits~20%

Real-World Pipeline Örneği

Production-ready full pipeline:

  1. Code checkout ve dependency cache
  2. Linting ve formatting check
  3. Unit tests ve coverage report
  4. Integration tests
  5. Security scanning (SAST/DAST)
  6. Docker build ve vulnerability scan
  7. Push to registry
  8. Deploy to staging
  9. Smoke tests
  10. Manual approval gate
  11. Deploy to production
  12. Health checks ve monitoring

Troubleshooting

  • Action logs'ları detaylı inceleyin
  • Debug mode'u aktifleştirin: ACTIONS_STEP_DEBUG=true
  • Local testing için act tool kullanın
  • Workflow syntax validator kullanın
  • GitHub Status page'i kontrol edin
GitHub ActionsCI/CDAutomationDevOpsDockerKubernetes
Paylaş:

Projeleriniz İçin Destek Alın

Uzman ekibimizle projelerinizi hayata geçirin

WhatsApp'tan İletişime Geç