CI/CD Pipeline Otomasyonu: GitHub Actions
GitHub Actions ile end-to-end CI/CD pipeline kurulumu.
DevOps Team
DevOps Engineers
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
Tip | Tasarruf |
---|---|
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:
- Code checkout ve dependency cache
- Linting ve formatting check
- Unit tests ve coverage report
- Integration tests
- Security scanning (SAST/DAST)
- Docker build ve vulnerability scan
- Push to registry
- Deploy to staging
- Smoke tests
- Manual approval gate
- Deploy to production
- 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
İlgili Yazılar
Kubernetes ile Mikroservis Mimarisi
Modern uygulamalar için Kubernetes orchestration ve mikroservis pattern'leri.
Next.js 14 ile Enterprise Uygulamalar Geliştirme
Next.js 14'ün sunduğu yeni özellikler ve enterprise seviye uygulamalarda kullanım senaryoları.
Projeleriniz İçin Destek Alın
Uzman ekibimizle projelerinizi hayata geçirin
WhatsApp'tan İletişime Geç