Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog GitLab CI/CD ile Sürekli Entegrasyon ve Dağıtım: 2026’da Adım Adım Rehber

GitLab CI/CD ile Sürekli Entegrasyon ve Dağıtım: 2026’da Adım Adım Rehber

GitLab CI/CD ile Sürekli Entegrasyon ve Dağıtım: 2026’da Adım Adım Rehber

GitLab CI/CD Nedir ve Neden Kullanmalısınız?

GitLab CI/CD Nedir ve Neden Kullanmalısınız? - GitLab CI/CD
GitLab CI/CD Nedir ve Neden Kullanmalısınız?

GitLab CI/CD, GitLab platformunun içinde yer alan bir Continuous Integration (CI) ve Continuous Deployment (CD) çözümüdür. Geliştiriciler kodlarını GitLab deposuna push ettiklerinde, tanımlı .gitlab-ci.yml dosyası sayesinde otomatik olarak test, build ve deployment aşamaları başlatılır. Bu sayede manuel hatalar azalır, kod kalitesi %40 daha yüksek olur ve yeni özelliklerin üretime geçiş süresi %30‑40 oranında kısalır.

GitLab CI/CD’nin en büyük avantajı, tamamen entegre bir sistem sunmasıdır; yani ayrı bir CI sunucusu kurmanıza gerek kalmaz. Ancak, yüksek performanslı bir AMD Ryzen VDS sunucu kullanmak, pipeline’ların daha hızlı çalışmasını ve kaynak tüketiminin optimum seviyede olmasını sağlar. Özellikle büyük projelerde paralel job çalıştırma yeteneği, geliştirme döngüsünü ciddi ölçüde hızlandırır.

GitLab Runner Nasıl Kurulur ve Yapılandırılır?

GitLab Runner, CI/CD işlerini çalıştıran ajanlardır. Runner’ı kurmak için öncelikle bir sunucu ortamına ihtiyacınız var. Bu ortam VDS sunucu paketleri arasında tercih edilebilir; çünkü VDS, kök erişimi ve özelleştirilebilir kaynaklar sunar. Aşağıdaki adımlar, Ubuntu 22.04 tabanlı bir sunucuda Runner kurulumunu gösterir:

  1. Gerekli paketleri yükleyin: sudo apt update && sudo apt install -y curl gnupg
  2. GitLab Runner deposunu ekleyin: curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
  3. Runner paketini kurun: sudo apt install gitlab-runner
  4. Runner’ı kaydedin: sudo gitlab-runner register komutunda GitLab URL, token, executor (genellikle docker veya shell) ve etiketleri belirtin.
  5. Service’i başlatın ve otomatik başlatma ayarlayın: sudo systemctl enable --now gitlab-runner

Runner kaydedildikten sonra, .gitlab-ci.yml dosyanızda tags alanı ile bu Runner’ı hedefleyebilirsiniz. Örneğin, tags: [ryzen-vds] ifadesi, yalnızca Ryzen VDS sunucusundaki Runner’ı kullanır ve iş yükünün uygun donanımda çalışmasını garantiler.

.gitlab-ci.yml Dosyasının Temel Yapısı ve En İyi Uygulamalar

GitLab CI/CD’nin kalbi .gitlab-ci.yml dosyasıdır. Bu dosya, job’ların aşamalarını, koşullarını ve bağımlılıklarını tanımlar. En yaygın kullanılan anahtar kelimeler stages, script, variables, artifacts ve cache’tir. Aşağıda, bir Node.js projesi için temel bir pipeline örneği verilmiştir:

stages:
  - test
  - build
  - deploy

variables:
  NODE_ENV: "production"

cache:
  paths:
    - node_modules/

test_job:
  stage: test
  image: node:18
  script:
    - npm ci
    - npm run lint
    - npm test
  artifacts:
    when: always
    reports:
      junit: reports/junit.xml

build_job:
  stage: build
  image: node:18
  script:
    - npm run build
  artifacts:
    paths:
      - dist/

deploy_job:
  stage: deploy
  image: alpine:latest
  script:
    - apk add --no-cache openssh
    - scp -r dist/ user@server:/var/www/app
  only:
    - main

En iyi uygulamalar arasında, her aşamada yalnızca gerekli bağımlılıkları yüklemek, artifacts ile test raporlarını saklamak ve cache kullanarak node_modules gibi büyük klasörlerin yeniden indirilmesini önlemek yer alır. Ayrıca, only ve except kurallarıyla hangi branch’ların deploy aşamasına geçeceğini kontrol etmek, hatalı dağıtımları engeller.

Pipeline Performansını Optimize Etmek: İpuçları ve Karşılaştırma Tablosu

Pipeline Performansını Optimize Etmek: İpuçları ve Karşılaştırma Tablosu - GitLab CI/CD
Pipeline Performansını Optimize Etmek: İpuçları ve Karşılaştırma Tablosu

Pipeline’ların yavaş çalışması, geliştirme sürecini olumsuz etkileyebilir. Performansı artırmak için aşağıdaki stratejileri uygulayabilirsiniz:

  • Paralel job oluşturun: Aynı aşamadaki bağımsız testleri aynı anda çalıştırın.
  • Docker image’larını önceden çekin ve cache kullanın.
  • Runner’ı güçlü bir VDS üzerine yerleştirin; örneğin Intel i9 VDS sunucular CPU yoğun işlerde %25 daha hızlı sonuç verir.
  • Yalnızca değişen dosyaları test edin; only/except ve rules ile değişiklik kapsamını sınırlayın.

Aşağıdaki tablo, farklı runner tiplerinin ortalama job süresine etkisini gösterir:

Runner TipiCPU ÇekirdeğiOrtalama Job SüresiÖnerilen Kullanım
Docker (shared)2 vCPU5:12 dkKüçük projeler, topluluk CI
Shell (VDS)4 vCPU3:45 dkOrta ölçekli uygulamalar
Docker (dedicated i9)8 vCPU2:10 dkYoğun derleme ve test
Docker (dedicated Ryzen)8 vCPU2:05 dkParalel testler, yüksek IO

Tablodan da görebileceğiniz gibi, güçlü bir donanım seçimi ve doğru executor tipi, pipeline süresini %50’ye kadar düşürebilir. Bu da sürüm sıklığını artırarak müşteri memnuniyetini %20 yükseltir.

Gerçek Dünya Senaryosu: E‑Ticaret Sitesi için CI/CD Entegrasyonu

Bir e-ticaret hosting hizmeti sunan bir firma, GitLab CI/CD’yi kullanarak haftada 3 kez yeni özellik yayınlamaya başladı. İlk adım, kod deposuna .gitlab-ci.yml eklemek ve test aşamasında Selenium tabanlı UI testlerini çalıştırmaktı. Sonraki adım, Docker imajını oluşturup Kubernetes kümesine otomatik olarak push etmekti.

Bu süreçte karşılaşılan iki kritik sorun vardı:

  • Veritabanı migrasyonu sırasında eski veri kaybı riski. Çözüm: before_script içinde yedek alma script’i eklemek.
  • Cache temizleme eksikliği, eski ürün fiyatlarının gösterilmesi. Çözüm: Deploy aşamasına redis-cli flushall komutu eklemek.

Sonuç olarak, ortalama dağıtım süresi 12 dakikadan 4 dakikaya düştü ve hata oranı %0.8’e geriledi. Bu, müşterilerin sipariş tamamlama oranını %15 artırdı. Proje, CI/CD sayesinde SEO hosting performansını da iyileştirerek arama motoru sıralamasında üst 3’e yükseldi.

CI/CD’de Güvenlik: Sızma Testi ve Güvenli Deploy Stratejileri

CI/CD pipeline’ları, kodun hızlı bir şekilde üretime gitmesini sağlarken aynı zamanda güvenlik risklerini de beraberinde getirebilir. Özellikle gizli anahtarların (secret) yanlışlıkla log’lara sızması, saldırganların sisteminize erişim elde etmesine yol açabilir. Bu riski azaltmak için şu adımları izleyin:

  • GitLab’ın CI/CD Settings → Variables bölümünde masked ve protected değişkenler tanımlayın.
  • Pipeline’da dependency scanning ve container scanning gibi yerleşik güvenlik taramalarını etkinleştirin.
  • Her deploy öncesi static application security testing (SAST) çalıştırarak kodda potansiyel açıkları tespit edin.
  • Üretim ortamına yalnızca onaylı merge request üzerinden geçiş izni verin; böylece manuel onay süreci ek bir güvenlik katmanı oluşturur.

Ayrıca, WAF güvenlik duvarı entegrasyonu, gelen istekleri filtreleyerek DDoS ve SQL injection gibi saldırıları önler. CI/CD sürecinde WAF kurallarını .gitlab-ci.yml içinde curl ile API üzerinden güncellemek, güvenlik politikasının otomatik olarak senkronize olmasını sağlar.

Sıkça Sorulan Sorular

GitLab Runner ile Docker executor arasındaki fark nedir?

Docker executor, her job için izole bir konteyner oluşturur; bu sayede bağımlılıklar temiz ve tekrarlanabilir bir ortamda çalışır. Shell executor ise doğrudan host işletim sisteminde komutları yürütür; hızlıdır ancak izole değildir ve ortam çakışmalarına yol açabilir.

Pipeline’ı sadece belirli bir branch için çalıştırmak nasıl ayarlanır?

.gitlab-ci.yml içinde only: veya rules: anahtarlarıyla branch filtrelemesi yapılabilir. Örneğin, only: [main, develop] sadece bu iki branch’ta job’ların tetiklenmesini sağlar.

CI/CD sürecinde artefact’ları ne kadar süre saklamalıyım?

Artefact saklama süresi proje ihtiyacına göre değişir; genellikle expire_in: 1 week yeterlidir. Kritik raporlar için daha uzun (örneğin 30 gün) bir süre belirlenebilir.

GitLab CI/CD’yi Kubernetes’e nasıl entegre ederim?

Kubernetes entegrasyonu için kubernetes cluster bilgilerini GitLab’da CI/CD > Variables altında tanımlayın ve deploy aşamasında kubectl komutlarını kullanarak manifest dosyalarını uygulayın.

Sonuç ve Bir Sonraki Adımınız

GitLab CI/CD, modern yazılım geliştirme süreçlerinde otomasyonu, kaliteyi ve hızını artıran güçlü bir araçtır. Doğru Runner seçimi, iyi yapılandırılmış .gitlab-ci.yml ve güvenlik odaklı taramalarla pipeline’larınızı optimize edebilirsiniz. Şimdi, VDS sunucu paketleri arasından ihtiyacınıza uygun bir sunucu seçerek GitLab Runner’ınızı kurun, örnek pipeline’ı test edin ve proje teslim sürelerinizi %30‑40 oranında kısaltın.