📝 BLOG

CI/CD Pipeline: Sürekli Entegrasyon ve Sürekli Dağıtım

CI/CD (Continuous Integration/Continuous Deployment), yazılım geliştirme sürecini otomatikleştirir ve hızlandırır. Bu rehberde CI/CD pipeline'larının temellerini ve implementasyonunu anlatıyoruz.

Son güncelleme:

Hazırlayan: Gsetsoft

CI/CD Pipeline: Sürekli Entegrasyon ve Sürekli Dağıtım

CI/CD Nedir?

CI (Continuous Integration): Geliştiricilerin kod değişikliklerini sık sık (günde birkaç kez) ana branch'e merge etmesi ve otomatik test çalıştırması.

CD (Continuous Deployment/Delivery): Kod değişikliklerinin otomatik olarak test edilip production'a deploy edilmesi. Delivery'de manuel onay, Deployment'da tam otomasyon.

Faydalar: Daha hızlı release cycle, daha az hata, daha güvenilir deploy'lar, geliştirici verimliliği artışı.

Pipeline: Kod commit → Build → Test → Deploy adımlarından oluşan otomatik iş akışı.

CI Pipeline Aşamaları

Source: Kod repository'sinden (GitHub, GitLab, Bitbucket) değişiklikleri çekin. Webhook ile otomatik tetikleme.

Build: Kodu derleyin ve bağımlılıkları yükleyin. npm install, npm run build. Build artifact'ları (Docker image, binary) oluşturun.

Test: Unit test, integration test ve end-to-end test çalıştırın. Test coverage raporu oluşturun. Coverage threshold'u kontrol edin.

Code quality: Linting (ESLint), type checking (TypeScript), security scanning (Snyk, Dependabot). Code quality gate'leri tanımlayın.

Artifact: Build artifact'larını registry'ye (Docker Hub, npm registry, S3) push edin. Version tag'leri ekleyin.

CD Pipeline Aşamaları

Staging deploy: Artifact'ı staging ortamına deploy edin. Otomatik smoke test çalıştırın.

Manual approval: Production deploy için manuel onay (Continuous Delivery). Onay sonrası otomatik deploy.

Production deploy: Blue-green deployment, canary release veya rolling update ile sıfır downtime deploy.

Post-deploy: Health check, monitoring, alerting. Deploy başarısız olursa otomatik rollback.

Notification: Slack, email veya Teams ile deploy durumu bildirimi. Başarılı/başarısız deploy'lar için farklı kanallar.

Popüler CI/CD Araçları

GitHub Actions: GitHub repository'lerinde native CI/CD. YAML workflow dosyaları ile yapılandırılır. Ücretsiz tier mevcut.

GitLab CI: GitLab repository'lerinde native CI/CD. .gitlab-ci.yml ile yapılandırılır. Docker runner desteği.

Jenkins: Self-hosted, açık kaynak CI/CD. Groovy pipeline script'leri ile yapılandırılır. Plugin ekosistemi çok geniş.

CircleCI: Cloud-based CI/CD. Hızlı build'ler ve paralel test desteği. config.yml ile yapılandırılır.

ArgoCD: Kubernetes için GitOps CD aracı. Git repository'sini source of truth olarak kullanır. Otomatik sync ve rollback.

Best Practices

Pipeline as Code: Pipeline yapılandırmasını kod olarak (YAML) saklayın. Version control ile takip edin.

Fast feedback: Pipeline'ı hızlı tutun (10 dakikadan az). Paralel test çalıştırın. Cache kullanın (node_modules, Docker layers).

Security: Secret'ları (API key, password) environment variable veya secret manager (Vault, AWS Secrets Manager) ile yönetin. Kod içine hardcode etmeyin.

Idempotency: Pipeline'ı birden fazla çalıştırmak aynı sonucu vermeli. Deploy script'leri idempotent olmalı.

Monitoring: Pipeline metriklerini izleyin: build süresi, test başarı oranı, deploy frekansı, MTTR (Mean Time to Recovery).

GitOps ve Infrastructure as Code

GitOps: Git repository'sini single source of truth olarak kullanın. Tüm altyapı ve uygulama değişiklikleri Git üzerinden yönetilir.

Terraform: Infrastructure as Code aracı. Cloud kaynaklarını (VM, database, network) kod olarak tanımlayın ve yönetin.

Kubernetes: Container orchestration platform. Deployment, Service, Ingress gibi resource'ları YAML ile tanımlayın.

Helm: Kubernetes için package manager. Chart'lar ile uygulama deploy'larını parametrize edin.

ArgoCD/Flux: Git repository'sini izleyin ve Kubernetes cluster'ına otomatik sync yapın. Drift detection ve auto-healing.

Gizlilik tercihiniz

Temel çerezler güvenli kullanım ve oturum yönetimi içindir. Temel ziyaret sayımı ayrıca yapılır; izin verirseniz ek kullanım analizlerini etkinleştiririz. Çerez Politikası