Logo
Mahmut Tüysüz
3 dakika okuma

DevOps 102: CI/CD Süreçleri ve Otomasyon Rehberi

Manuel dağıtımlara (deployment) son veren CI/CD (Sürekli Entegrasyon ve Sürekli Dağıtım) boru hatlarının yapısı, otomatik test entegrasyonu, pipeline aşamaları ve pratik bir GitHub Actions konfigürasyon örneği.

DevOps 102: CI/CD Süreçleri ve Otomasyon Rehberi

Yazılım geliştirme süreçlerinde kodun yerel makinede (localhost) çalışması yalnızca ilk adımdır. Kodun güvenli, hatasız ve hızlı bir şekilde canlı ortama (Production) aktarılması ise modern yazılım mühendisliğinin en kritik aşamalarından biridir. Manuel sunucu bağlantıları, elle alınan build'ler ve sunucuya atılan dosyalar insan hatasına oldukça açıktır.

CI/CD (Continuous Integration / Continuous Delivery & Deployment), kod değişikliklerinin test edilmesinden canlıya alınmasına kadar olan tüm aşamaları otomatize ederek teslimat hızını ve kalitesini artırır.


1. CI ve CD Neyi İfade Eder?

CI/CD süreci iki temel bileşenin bir araya gelmesinden oluşur:


2. Tipik Bir CI/CD Boru Hattı (Pipeline) Aşamaları

Başarılı bir CI/CD pipeline'ı genellikle şu adımlardan oluşur:

Aşama Yapılan İşlem Amacı
1. Lint & Format Kod stilinin ve statik analizlerin kontrolü Kod kalitesi ve okunabilirliği sağlamak.
2. Build (Derleme) Bağımlılıkların yüklenmesi ve projenin derlenmesi Kodun hatasız derlendiğini doğrulamak.
3. Test Execution Unit, Integration ve E2E testlerinin koşulması Regresyon hatalarını canlıya geçmeden önlemek.
4. Package / Containerize Docker imajının oluşturulması ve registry'ye yüklenmesi Çalıştırılabilir bağımsız paket üretmek.
5. Deploy (Dağıtım) Sunucuların, Kubernetes cluster'ının güncellenmesi Yeni sürümü kullanıcılara sunmak.

3. Örnek GitHub Actions Workflow Konfigürasyonu

Bir Node.js / TypeScript projesi için örnek .github/workflows/ci-cd.yml dosyası:

##yaml name: Node.js CI/CD Pipeline

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

jobs: build-and-test: runs-on: ubuntu-latest

steps:
- name: Checkout Repository
  uses: actions/checkout@v4

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

- name: Install Dependencies
  run: npm ci

- name: Run Linter
  run: npm run lint

- name: Execute Automated Tests
  run: npm test

- name: Build Project
  run: npm run build
  1. CI/CD Süreçlerinde En İyi Pratikler Erken Başarısız Ol (Fail Fast): Hızlı sonuç veren adımları (Lint ve Unit Test) pipeline'ın en başına koyun, böylece uzun süren build adımlarını gereksiz yere çalıştırmazsınız.

Gizli Bilgileri Güvenli Yönetin (Secret Management): API anahtarlarını veya sunucu şifrelerini asla koda gömmeyin; CI/CD sağlayıcınızın Secret Management (örn. GitHub Secrets) mekanizmasını kullanın.

Ortam İzolesi (Environment Isolation): Test, Staging ve Production ortamlarını tamamen ayırın.

Sonuç

Otomatik bir CI/CD hattı kurmak, başta zaman yatırımı gerektirse de geliştirme ekibine yüksek özgüven, hızlı geri bildirim döngüsü ve sıfıra yakın dağıtım hatası kazandırır. Unutmayın: Otomatize edilmeyen her adım, gelecekte potansiyel bir insan hatasıdır.

Bloga Dön