CI/CD Nedir? Surekli Entegrasyon ve Dagitim Rehberi
Kod yazdiniz, test ettiniz, sunucuya yuklediniz — ve saat gece 3'te bir sey bozuldu. Manuel deployment, yazilim gelistirmenin en riskli ve zaman alici sureci. CI/CD bu sureci otomatiklestirir ve guvenlestir.
CI/CD Nedir?
CI (Continuous Integration) — Surekli Entegrasyon
Her kod degisikliginin otomatik olarak test edilmesi ve ana dal ile birlestirilmesi.
CD (Continuous Delivery) — Surekli Teslimat
Test edilen kodun otomatik olarak production ortamina deploy edilmeye hazir hale getirilmesi.
CD (Continuous Deployment) — Surekli Dagitim
Test edilen kodun otomatik olarak production'a deploy edilmesi — insan mudahalesi olmadan.
Neden CI/CD?
| Manuel Surec | CI/CD ile | |-------------|----------| | Deployment saatler suruyor | Dakikalar icinde | | Hata riski yuksek | Otomatik testlerle dusuk | | "Benim bilgisayarimda calisiyor" | Standart ortam | | Geri alma zor | Tek tikla rollback | | Deployment korkutucu | Rutin ve guvenli | | Haftada 1 release | Gunde birden fazla |
CI/CD Pipeline Adimlari
1. Source (Kaynak)
- Gelistirici kodu push eder
- Pull request acar
- Pipeline otomatik baslar
2. Build (Derleme)
- Kod derlenir
- Bagimliliklar yuklenir
- Docker image olusturulur
3. Test (Test)
- Unit testler calistirilir
- Integration testler
- E2E testler
- Linting ve format kontrolleri
- Guvenlik taramasi
4. Deploy (Dagitim)
- Staging ortamina deploy
- Smoke testler
- Production'a deploy
- Health check
5. Monitor (Izleme)
- Log izleme
- Hata takibi
- Performans metrikleri
- Otomatik alert
Populer CI/CD Araclari
| Arac | Tur | Fiyat | One Cikan | |------|-----|-------|-----------| | GitHub Actions | Cloud | Ucretsiz tier | GitHub entegrasyonu | | GitLab CI | Cloud/Self-hosted | Ucretsiz tier | All-in-one | | Jenkins | Self-hosted | Ucretsiz | En esnek | | CircleCI | Cloud | Ucretsiz tier | Hizli | | Vercel | Cloud | Ucretsiz tier | Next.js icin en iyi | | Google Cloud Build | Cloud | Ucretsiz tier | GCP entegrasyonu |
GitHub Actions Ornegi
name: CI/CD Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run lint
- run: npm run test
- run: npm run build
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to production
run: echo "Deploy steps here"
CI/CD Best Practices
- Her commit'te test calistirin — Hatalari erken yakalayin
- Pipeline'i hizli tutun — 10 dakikadan kisa
- Main branch'i her zaman deploy edilebilir tutun
- Feature branch'lerde calisin — Main'e direkt push yapmayin
- Rollback plani olsun — Her zaman geri alabilin
- Environment degiskenlerini guvenli saklatin — Secrets kullanin
- Pipeline'i kod olarak yonetin — Infrastructure as Code
CI/CD Metrikleri
| Metrik | Hedef | |--------|-------| | Deploy frekansi | Gunde/haftada birden fazla | | Lead time | Commit'ten production'a kisa sure | | Hata orani | Dusuk (2 altinda) | | Kurtarma suresi | 1 saatten kisa | | Pipeline suresi | 10 dakikadan kisa |
Sonuc
CI/CD, modern yazilim gelistirmenin olmazsa olmazidir. Otomatik test, derleme ve dagitim ile ekibiniz daha hizli, daha guvenli ve daha sik release yapabilir. GitHub Actions ile baslamak ucretsiz ve kolay.
CI/CD pipeline kurulumu ve DevOps danismanligi icin benimle iletisime gecin: info@cagribilgehan.com. Projelerime goz atin: cagribilgehan.com