GitLab CI/CD: Kurulum, Kullanım ve En İyi Uygulamalar

29 September 2025
Summary: Bu makale GitLab CI/CD'nin temellerini, kurulum adımlarını, pipeline örneklerini ve best practice yöntemlerini kapsamlı bir şekilde açıklar. Gerçek dünyadan senaryolar, YAML dosyaları ve pratik komutlarla CI/CD sürecini öğrenin.

GitLab CI/CD: Kurulum, Kullanım ve En İyi Uygulamalar

Introduction

Yazılım geliştirme süreçlerinde sürekli entegrasyon (CI) ve sürekli teslimat/dağıtım (CD) kavramları, modern DevOps kültürünün temel taşlarıdır.
GitLab, CI/CD özelliklerini doğrudan entegre ederek geliştiricilere güçlü, esnek ve ölçeklenebilir bir çözüm sunar.

Bu makalede:

  • GitLab CI/CD’nin temel kavramlarını,
  • .gitlab-ci.yml dosyasının yapısını,
  • GitLab Runner kurulumunu,
  • Gerçekçi pipeline örneklerini,
  • Kubernetes ve Docker entegrasyonlarını,
  • En iyi uygulamaları (best practices) öğreneceğiz.

Prerequisites

Başlamadan önce:

  • Bir GitLab hesabınız (self-hosted veya gitlab.com) olmalı,
  • Temel Git bilgisine sahip olmalısınız,
  • Docker yüklü bir ortamınız olmalı,
  • Basit bir uygulama projesi (örn. Python Flask, Node.js Express) hazır bulunmalı.

Step 1 – GitLab CI/CD Temelleri

1.1 CI/CD Nedir?

  • CI (Continuous Integration): Geliştiricilerin kodlarını sık sık ana branch’e entegre etmesi, testlerin otomatik çalıştırılması.
  • CD (Continuous Delivery/Deployment): Kodun otomatik olarak staging/production ortamına dağıtılması.

1.2 GitLab CI/CD’nin Gücü

  • GitLab, pipeline mantığını stages (aşamalar) ve jobs (işler) üzerine kurar.
  • Tüm süreç .gitlab-ci.yml dosyasında tanımlanır.
  • Örnek bir pipeline: build → test → deploy.
stages:
  - build
  - test
  - deploy

1.3 GitLab Runner Kavramı

  • Runner, job’ları çalıştıran ajandır.
  • Kendi makinenize veya Kubernetes cluster’ınıza kurabilirsiniz.

Step 2 – İlk Pipeline Yazımı

2.1 Basit .gitlab-ci.yml

stages:
  - build
  - test
  - deploy

build-job:
  stage: build
  script:
    - echo "Building the app..."

test-job:
  stage: test
  script:
    - echo "Running tests..."

deploy-job:
  stage: deploy
  script:
    - echo "Deploying..."

2.2 Job ve Stage Mantığı

  • Stage: Pipeline’ın adımları (örn. build, test, deploy).
  • Job: Her stage’de yapılacak işler.
  • Script: Çalıştırılacak komutlar.

2.3 Artifacts ve Cache Kullanımı

build-job:
  stage: build
  script:
    - mkdir dist
    - echo "Build output" > dist/output.txt
  artifacts:
    paths:
      - dist/

Step 3 – GitLab Runner Kurulumu

3.1 Linux’te Runner Kurulumu

sudo apt-get install -y curl
curl -L --output gitlab-runner.deb https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
sudo dpkg -i gitlab-runner.deb

3.2 Runner Kaydı

sudo gitlab-runner register

Sorulacak bilgiler:

  • GitLab URL: https://gitlab.com/
  • Token: Proje ayarlarından alınır
  • Executor: docker önerilir

3.3 Docker Executor Kullanımı

[[runners]]
  name = "docker-runner"
  executor = "docker"
  [runners.docker]
    image = "python:3.10"
    privileged = true

Step 4 – Docker ile Pipeline Kullanımı

4.1 Docker-in-Docker

image: docker:latest

services:
  - docker:dind

stages:
  - build

build-job:
  stage: build
  script:
    - docker build -t myapp .

4.2 Node.js Örneği

image: node:18

stages:
  - install
  - test

install-job:
  stage: install
  script:
    - npm install

test-job:
  stage: test
  script:
    - npm test

4.3 Python Flask Örneği

image: python:3.10

stages:
  - test

test-job:
  stage: test
  script:
    - pip install -r requirements.txt
    - pytest

Step 5 – Ortamlar ve Deploy Stratejileri

5.1 Ortam Tanımları

deploy-staging:
  stage: deploy
  script:
    - echo "Deploying to staging..."
  environment:
    name: staging
    url: https://staging.example.com

5.2 Manual Approval

deploy-production:
  stage: deploy
  script:
    - echo "Deploying to production..."
  when: manual
  environment:
    name: production
    url: https://example.com

5.3 Blue-Green ve Canary Deployments

  • Blue-Green: İki ayrı ortam, biri aktif diğeri pasif.
  • Canary: Yeni versiyon küçük bir kullanıcı grubuna açılır.

Step 6 – Best Practices

  • Caching: Bağımlılıkları cache’leyin.
  • Artifacts: Build çıktısını sonraki job’larda kullanın.
  • Secrets Management: GitLab CI/CD Variables kullanın.
  • Parallel Jobs: Testleri paralel çalıştırın.
  • Monitoring: Prometheus/Grafana ile pipeline metriklerini izleyin.

Step 7 – Kubernetes Entegrasyonu

7.1 Kubernetes’e Deploy

deploy-k8s:
  stage: deploy
  image: bitnami/kubectl
  script:
    - kubectl apply -f k8s/deployment.yaml
  environment:
    name: production
    url: https://k8s.example.com

7.2 Helm ile Deploy

deploy-helm:
  stage: deploy
  script:
    - helm upgrade --install myapp ./chart

Conclusion

Bu makalede GitLab CI/CD’nin temellerini öğrendiniz:

  • .gitlab-ci.yml dosyasının yapısı,
  • Runner kurulumu,
  • Docker ve Kubernetes entegrasyonları,
  • Ortam yönetimi ve deploy stratejileri,
  • Best practices.
Back to Article Page