GitLab Rehberi

GitLab kullanım rehberi — kod yönetimi, CI/CD, issue tracking, merge request süreci

GitLab Rehberi

GitLab, Denomas'ın kod yönetimi, CI/CD ve proje takibi platformudur. Self-hosted GitLab instance'ımız, tüm geliştirme sürecinin merkezinde yer alır.

Erişim

BilgiDeğer
URLcode.denomas.com
GirişSSO (Keycloak)
SSHSSH anahtar tabanlı erişim

Temel Özellikler

Repository Yönetimi

GitLab, Denomas'ın tüm kaynak kodunu, altyapı konfigürasyonlarını ve dokümantasyonunu barındırır:

ÖzellikAçıklama
Git RepositoryGit tabanlı kaynak kod yönetimi
BranchingGitFlow veya trunk-based geliştirme stratejileri
Protected Branchesmain ve release/* dalları korunmalıdır (doğrudan push yasak)
Code OwnersCODEOWNERS dosyası ile otomatik incelemeci atama
Repository MirrorsKritik repo'ların otomatik yedek mirror'ları
Git LFSBüyük dosyalar için Large File Storage

Repository Organizasyonu:

code.denomas.com/
├── denomas/              — Ürün kaynak kodları
│   ├── backend/
│   ├── frontend/
│   └── mobile/
├── infra/                — Altyapı ve otomasyon
│   ├── ansible-roles/
│   ├── terraform-infra/
│   ├── infra-automation/
│   └── runbooks/
├── internal/             — İç araçlar ve scriptler
├── docs/                 — Dokümantasyon
└── sandbox/              — Deney ve test projeleri

Merge Request (MR) İş Akışı

Merge request, Denomas'taki tüm kod değişikliklerinin incelenme ve onaylanma sürecidir:

Detaylı MR Süreci:

  1. Branch Oluştur: main'den yeni feature branch oluşturun
  2. Geliştirme: Değişiklikleri commit edin (Conventional Commits formatında)
  3. MR Aç: GitLab üzerinden MR oluşturun:
    • Açıklayıcı başlık ve açıklama yazın
    • İlgili issue'yu bağlayın (Closes #123)
    • İncelemeci atayın (CODEOWNERS otomatik atar)
    • Uygun label'ları ekleyin
  4. CI Pipeline: Otomatik lint, test, build ve güvenlik taramaları çalışır
  5. Kod İnceleme: En az 1 onay gereklidir (Kod İnceleme standartlarına uygun)
  6. Düzeltme: Geri bildirimler doğrultusunda güncellemeler yapılır
  7. Onay ve Merge: Pipeline başarılı + incelemeci onayı → squash merge
  8. Temizlik: Feature branch otomatik silinir

MR Kontrol Listesi:

  • CI pipeline başarılı
  • En az 1 incelemeci onayı
  • Çakışma (conflict) yok
  • Güvenlik taraması geçti
  • Test coverage düşmedi
  • Dokümantasyon güncellendi (gerekirse)

CI/CD Pipeline

CI/CD pipeline yapılandırması .gitlab-ci.yml dosyasıyla tanımlanır:

stages:
  - lint
  - test
  - security
  - build
  - deploy

lint:
  stage: lint
  script:
    - pre-commit run --all-files

test:
  stage: test
  script:
    - pytest --cov
  coverage: '/TOTAL.*\s+(\d+%)$/'

security:
  stage: security
  script:
    - trivy fs --severity HIGH,CRITICAL .
    - gitlab-sast

build:
  stage: build
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

deploy_staging:
  stage: deploy
  script:
    - ansible-playbook -i inventory/staging deploy.yml
  only:
    - develop
  environment:
    name: staging

deploy_production:
  stage: deploy
  script:
    - ansible-playbook -i inventory/production deploy.yml
  only:
    - main
  when: manual
  environment:
    name: production

Pipeline Aşamaları:

AşamaAmaçAraçlar
lintKod stil ve format kontrolüpre-commit, eslint, ruff
testBirim ve entegrasyon testleripytest, jest
securityGüvenlik taramasıTrivy, GitLab SAST, Semgrep
buildDocker imaj oluşturmaDocker, Kaniko
deployOrtama dağıtımAnsible, Helm

Issue Tracking (Görev Takibi)

GitLab issue tracking, görev ve hata takibi için kullanılır:

ÖzellikAçıklama
IssueGörev, hata, özellik talebi ve tartışma
LabelÖncelik (P1-P4), tür (bug, feature, task), durum (doing, review)
MilestoneSprint ve sürüm planlama
BoardKanban görünüm (To Do → Doing → Review → Done)
WeightGörev ağırlık/puan tahmini
Due DateSon tarih ve gecikme takibi
Related Issuesİlişkili görevler arası bağlantı

Issue Oluşturma Kuralları:

  • Açıklayıcı başlık kullanın
  • Yeniden üretim adımları ekleyin (hata raporlarında)
  • Uygun label'ları atayın
  • Sprint milestone'una ekleyin
  • Sorumlu kişiyi atayın

Wiki Kullanımı

Her GitLab projesi için wiki sayfası oluşturulabilir:

Kullanım AlanıAçıklama
Proje dokümantasyonuREADME'ye sığmayan detaylı dokümantasyon
API dokümantasyonuEndpoint, parametre ve örnek dokümantasyonu
Mimari kararlarADR (Architecture Decision Records)
Runbook'larOperasyonel prosedürler (runbooks repo için)
Onboarding rehberiYeni takım üyesi için proje oryantasyonu

Wiki En İyi Pratikleri:

  • Markdown formatında yazın
  • Sayfa hiyerarşisi oluşturun (sidebar)
  • Görsel ve diyagram ekleyin (Mermaid desteği mevcuttur)
  • Güncelliği koruyun (stale sayfaları işaretleyin)

Container Registry

  • Docker imaj depolama (her proje için)
  • Otomatik imaj tarama (Trivy)
  • Sürüm etiketleme (latest, v1.2.3, commit SHA)
  • Geçiş süresi dolan imajların otomatik temizliği

En İyi Pratikler

Commit Mesajları

Conventional Commits formatını kullanın:

<tur>(<kapsam>): <açıklama>

[govde]

[altbilgi]
TürAçıklamaÖrnek
featYeni özellikfeat(auth): LDAP entegrasyonu ekle
fixHata düzeltmefix(api): null pointer hatasını düzelt
docsDokümantasyondocs(readme): kurulum adımlarını güncelle
refactorYeniden yapılandırmarefactor(db): sorgu optimizasyonu
testTesttest(auth): login test coverage artır
ciCI/CD değişikliğici: security stage ekle
choreBakımchore(deps): bağımlılıkları güncelle

Branch İsimlendirme

TürFormatÖrnek
Featurefeature/ISSUE-açıklamafeature/MON-42-dashboard
Bugfixfix/ISSUE-açıklamafix/MON-99-memory-leak
Hotfixhotfix/ISSUE-açıklamahotfix/MON-101-crash
Releaserelease/v1.2.3release/v2.0.0
Docsdocs/ISSUE-açıklamadocs/MON-50-api-docs

Merge Request Süreci (Özet)

  1. Feature branch oluşturun (feature/ABC-123-açıklama)
  2. Değişiklikleri commit edin (Conventional Commits)
  3. MR açın ve incelemeci atayın
  4. Kod inceleme tamamlansın
  5. CI pipeline başarılı olsun
  6. Merge yapın (squash merge tercih edilir)

İlgili Sayfalar