GitLab Rehberi
4 minute read
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
| Bilgi | Değer |
|---|---|
| URL | code.denomas.com |
| Giriş | SSO (Keycloak) |
| SSH | SSH 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:
| Özellik | Açıklama |
|---|---|
| Git Repository | Git tabanlı kaynak kod yönetimi |
| Branching | GitFlow veya trunk-based geliştirme stratejileri |
| Protected Branches | main ve release/* dalları korunmalıdır (doğrudan push yasak) |
| Code Owners | CODEOWNERS dosyası ile otomatik incelemeci atama |
| Repository Mirrors | Kritik repo'ların otomatik yedek mirror'ları |
| Git LFS | Bü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:
- Branch Oluştur:
main'den yeni feature branch oluşturun - Geliştirme: Değişiklikleri commit edin (Conventional Commits formatında)
- 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
- CI Pipeline: Otomatik lint, test, build ve güvenlik taramaları çalışır
- Kod İnceleme: En az 1 onay gereklidir (Kod İnceleme standartlarına uygun)
- Düzeltme: Geri bildirimler doğrultusunda güncellemeler yapılır
- Onay ve Merge: Pipeline başarılı + incelemeci onayı → squash merge
- 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şama | Amaç | Araçlar |
|---|---|---|
| lint | Kod stil ve format kontrolü | pre-commit, eslint, ruff |
| test | Birim ve entegrasyon testleri | pytest, jest |
| security | Güvenlik taraması | Trivy, GitLab SAST, Semgrep |
| build | Docker imaj oluşturma | Docker, Kaniko |
| deploy | Ortama dağıtım | Ansible, Helm |
Issue Tracking (Görev Takibi)
GitLab issue tracking, görev ve hata takibi için kullanılır:
| Özellik | Açıklama |
|---|---|
| Issue | Görev, hata, özellik talebi ve tartışma |
| Label | Öncelik (P1-P4), tür (bug, feature, task), durum (doing, review) |
| Milestone | Sprint ve sürüm planlama |
| Board | Kanban görünüm (To Do → Doing → Review → Done) |
| Weight | Görev ağırlık/puan tahmini |
| Due Date | Son 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ümantasyonu | README'ye sığmayan detaylı dokümantasyon |
| API dokümantasyonu | Endpoint, parametre ve örnek dokümantasyonu |
| Mimari kararlar | ADR (Architecture Decision Records) |
| Runbook'lar | Operasyonel prosedürler (runbooks repo için) |
| Onboarding rehberi | Yeni 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ür | Açıklama | Örnek |
|---|---|---|
feat | Yeni özellik | feat(auth): LDAP entegrasyonu ekle |
fix | Hata düzeltme | fix(api): null pointer hatasını düzelt |
docs | Dokümantasyon | docs(readme): kurulum adımlarını güncelle |
refactor | Yeniden yapılandırma | refactor(db): sorgu optimizasyonu |
test | Test | test(auth): login test coverage artır |
ci | CI/CD değişikliği | ci: security stage ekle |
chore | Bakım | chore(deps): bağımlılıkları güncelle |
Branch İsimlendirme
| Tür | Format | Örnek |
|---|---|---|
| Feature | feature/ISSUE-açıklama | feature/MON-42-dashboard |
| Bugfix | fix/ISSUE-açıklama | fix/MON-99-memory-leak |
| Hotfix | hotfix/ISSUE-açıklama | hotfix/MON-101-crash |
| Release | release/v1.2.3 | release/v2.0.0 |
| Docs | docs/ISSUE-açıklama | docs/MON-50-api-docs |
Merge Request Süreci (Özet)
- Feature branch oluşturun (
feature/ABC-123-açıklama) - Değişiklikleri commit edin (Conventional Commits)
- MR açın ve incelemeci atayın
- Kod inceleme tamamlansın
- CI pipeline başarılı olsun
- Merge yapın (squash merge tercih edilir)
Self-hosted runner'lar @altyapi-ekibi tarafından yönetilir. Özel runner ihtiyacı için Odoo Helpdesk üzerinden talep oluşturun.
GitLab'a SSH ile bağlanmak için SSH anahtarınızı GitLab profilinize ekleyin. ssh-keygen -t ed25519 komutuyla anahtar oluşturabilirsiniz.
İlgili Sayfalar
- Araç ve İpuçları
- Nextcloud Rehberi
- Odoo Rehberi
- CI/CD Pipeline
- Kod İnceleme
- Mühendislik
Geribildirim
Bu sayfa yararlı oldu mu?
Bu sayfa faydali oldu
Bu sayfa gelistirilmeli
