logo
eng-flag

GitLab CI/CD Notları ve İpuçları

İçindekiler

  1. GitLab CI/CD Temelleri
  2. GitLab CI/CD Yapılandırması
  3. GitLab Runners
  4. GitLab CI/CD Pipeline
  5. GitLab CI/CD Değişkenleri
  6. GitLab CI/CD Artifacts
  7. GitLab CI/CD Önbelleğe Alma
  8. Docker ile GitLab CI/CD
  9. Kubernetes ile GitLab CI/CD
  10. GitLab CI/CD Şablonları
  11. GitLab CI/CD Auto DevOps
  12. GitLab CI/CD Güvenlik Taraması
  13. GitLab CI/CD En İyi Uygulamaları
  14. GitLab CI/CD Sorun Giderme

GitLab CI/CD Temelleri

GitLab CI/CD nedir?

GitLab CI/CD, sürekli metodolojiler aracılığıyla yazılım geliştirme için GitLab'e entegre edilmiş bir araçtır:

  • Sürekli Entegrasyon (CI)
  • Sürekli Teslim (CD)
  • Sürekli Dağıtım (CD)

Temel Bileşenler

  • .gitlab-ci.yml dosyası: CI/CD pipeline'ını tanımlar
  • GitLab Runner: Pipeline'daki işleri yürütür
  • Pipeline'lar: Yürütülecek aşamaları ve işleri tanımlar
  • İşler: Pipeline'daki bireysel görevler

GitLab CI/CD Yapılandırması

Temel .gitlab-ci.yml yapısı

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Uygulama derleniyor"

test_job:
  stage: test
  script:
    - echo "Testler çalıştırılıyor"

deploy_job:
  stage: deploy
  script:
    - echo "Uygulama dağıtılıyor"

İş yapısı

is_adi:
  stage: aşama_adı
  image: docker_imaji
  script:
    - komut1
    - komut2
  only:
    - dal_adı
  tags:
    - runner_etiketi

GitLab Runners

GitLab Runner'ı Yükleme

# Debian/Ubuntu için
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner

# CentOS/RHEL için
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install gitlab-runner

Runner'ı Kaydetme

sudo gitlab-runner register

Runner'ları Listeleme

sudo gitlab-runner list

Runner'ı Başlatma/Durdurma

sudo gitlab-runner start
sudo gitlab-runner stop

GitLab CI/CD Pipeline

Aşamaları tanımlama

stages:
  - build
  - test
  - deploy

İşleri tanımlama

build_job:
  stage: build
  script:
    - echo "Uygulama derleniyor"

test_job:
  stage: test
  script:
    - echo "Testler çalıştırılıyor"

deploy_job:
  stage: deploy
  script:
    - echo "Uygulama dağıtılıyor"

Koşulları kullanma

deploy_job:
  stage: deploy
  script:
    - echo "Uygulama dağıtılıyor"
  only:
    - master
  when: manual

GitLab CI/CD Değişkenleri

Önceden tanımlanmış değişkenler

  • CI_COMMIT_SHA: Projenin derlendiği commit'in revizyon numarası
  • CI_COMMIT_SHORT_SHA: CI_COMMIT_SHA'nın ilk sekiz karakteri
  • CI_COMMIT_REF_NAME: Projenin derlendiği dal veya etiket adı
  • CI_JOB_ID: Mevcut işin benzersiz kimliği

Özel değişkenler

variables:
  BENIM_DEGISKENIM: "benim-degerim"

is_adi:
  script:
    - echo $BENIM_DEGISKENIM

Maskelenmiş değişkenler

GitLab arayüzünde ayarlanır: Ayarlar > CI/CD > Değişkenler

GitLab CI/CD Artifacts

Artifact'ları tanımlama

is_adi:
  script:
    - make build
  artifacts:
    paths:
      - build/
    expire_in: 1 week

Artifact'ları indirme

Projenizin CI/CD > İşler > Bir iş seçin > Artifact'ları indir

GitLab CI/CD Önbelleğe Alma

Önbelleği tanımlama

cache:
  paths:
    - node_modules/

is_adi:
  script:
    - npm install
    - npm run build

İşe özel önbellek

is_adi:
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/
  script:
    - npm install
    - npm run build

Docker ile GitLab CI/CD

Docker imajı kullanma

is_adi:
  image: python:3.9
  script:
    - python --version

Docker imajı oluşturma

imaj_olustur:
  image: docker:latest
  services:
    - docker:dind
  script:
    - docker build -t benim-imajim:$CI_COMMIT_SHA .
    - docker push benim-imajim:$CI_COMMIT_SHA

Kubernetes ile GitLab CI/CD

Kubernetes'e dağıtma

k8s_dagitim:
  image: bitnami/kubectl:latest
  script:
    - kubectl config set-cluster mycluster --server="$KUBE_URL" --insecure-skip-tls-verify=true
    - kubectl config set-credentials admin --token="$KUBE_TOKEN"
    - kubectl config set-context default --cluster=mycluster --user=admin
    - kubectl config use-context default
    - kubectl apply -f k8s/deployment.yaml

GitLab CI/CD Şablonları

Şablon kullanma

include:
  - template: Auto-DevOps.gitlab-ci.yml

Özel şablon oluşturma

  1. Projenizde bir dosya oluşturun (örn. benim-sablonum.yml)
  2. .gitlab-ci.yml dosyanıza ekleyin:
include:
  - local: benim-sablonum.yml

GitLab CI/CD Auto DevOps

Auto DevOps'u Etkinleştirme

  1. Projenizin Ayarlar > CI/CD > Auto DevOps bölümüne gidin
  2. "Varsayılan olarak Auto DevOps pipeline'ını kullan" seçeneğini işaretleyin
  3. Dağıtım stratejisini ve diğer seçenekleri yapılandırın

Auto DevOps'u Özelleştirme

Auto DevOps'u geçersiz kılmak veya genişletmek için bir .gitlab-ci.yml dosyası oluşturun:

include:
  - template: Auto-DevOps.gitlab-ci.yml

stages:
  - build
  - test
  - deploy

# Özel işlerinizi buraya ekleyin

GitLab CI/CD Güvenlik Taraması

SAST'ı (Statik Uygulama Güvenlik Testi) Etkinleştirme

include:
  - template: Security/SAST.gitlab-ci.yml

Konteyner Taramasını Etkinleştirme

include:
  - template: Security/Container-Scanning.gitlab-ci.yml

Bağımlılık Taramasını Etkinleştirme

include:
  - template: Security/Dependency-Scanning.gitlab-ci.yml

GitLab CI/CD En İyi Uygulamaları

  1. .gitlab-ci.yml dosyanızı basit ve okunabilir tutun
  2. Pipeline'ınızı düzenlemek için aşamaları kullanın
  3. Yapılandırma için değişkenleri kullanın
  4. Pipeline'ınızı hızlandırmak için önbelleğe almayı kullanın
  5. İşler arasında veri geçirmek için artifact'ları kullanın
  6. Ortak yapılandırmaları yeniden kullanmak için şablonları kullanın
  7. Birleştirme isteği pipeline'larını kullanın
  8. Uygun hata işleme ve bildirimler uygulayın
  9. Özellik dalları için inceleme uygulamalarını kullanın
  10. Pipeline'ınızda güvenlik taraması uygulayın

GitLab CI/CD Sorun Giderme

Pipeline durumunu kontrol etme

Projenizin CI/CD > Pipeline'lar bölümüne gidin

İş günlüklerini görüntüleme

Projenizin CI/CD > İşler > Bir iş seçin bölümüne gidin

SSH ile hata ayıklama

  1. İşte hata ayıklama izlemesini etkinleştirin:
is_adi:
  variables:
    CI_DEBUG_TRACE: "true"
  1. Yerel olarak hata ayıklamak için gitlab-runner kullanın:
gitlab-runner exec docker is_adi

Yaygın sorunlar

  • Runner bağlantı sorunları: Runner durumunu ve ağı kontrol edin
  • İş zaman aşımı: İş yapılandırmasında zaman aşımını artırın
  • Artifact yükleme hatası: Depolama kotasını ve ağı kontrol edin
  • Önbellek sorunları: Önbelleği temizleyin ve yeniden oluşturun

2024 © Tüm hakları saklıdır - buraxta.com