Ana içeriğe geç

GitLab nedir? Özellikler, Faydalar ve Başlarken

Bu rehber, GitLab’ın geliştirmeyi nasıl sadeleştirdiğini, CI/CD ile nasıl entegre olduğunu ve iş birliğini nasıl güçlendirdiğini inceliyor.
Kurtis Pykes
Kurtis Pykes

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google ile devam edinDevam ederek, Kullanım Koşullarımızı ve Gizlilik Politikamızı kabul etmiş ve verilerinizin ABD'de saklandığını onaylamış olursunuz.

Projelerinizi nasıl yönettiğiniz, verimliliği korumada ve yüksek kaliteli yazılım çözümleri sunmada kritik bir rol oynar.

Bir geliştirici ekibinin bir uygulama üzerinde çalıştığını, her gün kod güncellemeleri yaptığını; ancak değişiklikleri izlemediğini, sürümleri yönetmediğini ya da test ve dağıtım süreçlerini yürütmediğini hayal edin. Bir şeylerin ters gitmesi kaçınılmaz!

Neyse ki bu kurgusal senaryo günümüzde pek olası değil (umarım), çünkü bu blog yazısında ele alacağımız GitLab gibi araçlar var.

Şunları ele alacağız:

  • GitLab’ın temel özellikleri
  • Avantajları
  • GitLab’ın diğer Git barındırma platformlarıyla karşılaştırması
  • Ve nasıl başlayacağınız

Hadi başlayalım!

GitLab nedir?

GitLab, yazılım geliştirme ve DevOps için tasarlanmış hepsi bir arada bir platformdur. İlk başta, ekiplerin kod üzerinde iş birliği yapmasını sağlayan web tabanlı bir Git depo yöneticisiydi. Ancak o zamandan beri, tüm yazılım geliştirme yaşam döngüsünü (SDLC) yönetmek için tamamen entegre bir çözüme dönüştü.

Özetle, GitLab geliştiricilere şunları sağlar:

  • Sürüm kontrolünü yönetme
  • CI/CD boru hatlarını otomatikleştirme
  • Proje görevlerini yönetme
  • Performansı izleme

Bu yetenekler tek bir arayüzde sunulur ve GitLab’ı geliştirme süreçlerini sadeleştirmek için popüler bir seçenek haline getirir.

GitLab’ın Temel Özellikleri

GitLab, geliştirme ve operasyon iş akışlarını sadeleştirmek isteyen geliştiriciler ve kuruluşlar için geniş bir özellik yelpazesi sunar. Platformun bazı kilit yeteneklerini inceleyelim.

GitLab depoları

GitLab depoları, Git tabanlı kaynak kodunu yönetmenin temelini oluşturur. Geliştiriciler, dallanma, commit geçmişleri ve birleştirme istekleri gibi temel sürüm kontrol özelliklerini destekleyen depolar oluşturabilir, klonlayabilir ve yönetebilir; bu da ekiplerin kod üzerinde iş birliği yapmasına yardımcı olur.

GitLab depolarının arayüzünü gösteren bir görsel

GitLab depolarına örnek | Kaynak: Bir GitLab Deposunu Yansıtma

CI/CD entegrasyonu

GitLab’ın öne çıkan özelliklerinden biri, yerleşik CI/CD boru hatlarıdır. Bu CI/CD boruhatları, bu görevleri otomatikleştirmek için boru hatlarını tanımlayan basit YAML yapılandırma dosyaları kullanarak kodun test edilmesi, derlenmesi ve dağıtılması süreçlerini otomatikleştirir.

Ayrıca GitLab’ın boru hatları esnektir ve Kubernetes ve Docker gibi popüler araçlarla entegre olur – bulut tabanlı ve şirket içi dağıtımların yönetimini kolaylaştırır.

CI/CD’nin geliştirme iş akışınıza nerede uyduğunu gösteren görsel

CI/CD geliştirme iş akışınıza nerede oturur | Kaynak: GitLab CI/CD’ye Başlayın

GitLab Auto DevOps

Auto DevOps, uygulamaları derlemek, test etmek ve dağıtmak için önceden yapılandırılmış şablonlar sunarak CI/CD sürecini basitleştirir. Esasen, geliştiriciler minimum kurulumla görevleri otomatikleştirebilir.

Hata takibi ve proje yönetimi

GitLab, proje yönetiminde de başarılıdır; çevik iş akışlarını desteklemek için iş panoları, kilometre taşları, etiketler ve burndown grafikleri gibi araçlar sunar. Bu özellikler, fikirden dağıtıma kadar konuların ilerlemesini izlemeye olanak tanır ve böylece projenin sağlığı ve zaman çizelgesi hakkında kapsamlı bir görünüm sağlar.

Bir GitLab Issue Board örneği

Bir GitLab Issue Board örneği | Kaynak: GitLab Issue Board’larını Kullanmanın 4 Yolu

GitLab Pages

Statik web sitelerini barındırmak için hızlı ve kolay bir çözüme ihtiyaç duyan geliştiriciler için GitLab Pages tam da bunu sunar. Dokümantasyon, portföy siteleri veya diğer statik web içeriklerini doğrudan GitLab deponuzdan dağıtabilirsiniz.

GitLab Pages’i öğrenmek için kaynaklar

GitLab Pages’i öğrenmek için kaynaklar | Kaynak: GitLab Pages ile Başlarken

GitLab Kullanmanın Avantajları

Peki, GitLab’ı geliştirme ekipleri için cazip kılan nedir? Hemen bakalım!

Hepsi bir arada platform

GitLab’ın başlıca faydalarından biri entegre yapısıdır. Yazılım projelerinizde sürüm kontrolü, CI/CD, proje yönetimi ve izleme için birden fazla araç arasında geçiş yapmanız gerekmez – her şey tek ve uyumlu bir platformda birleşir.

İş birliği ve ekip yönetimi

GitLab, özünde iş birliği düşünülerek tasarlanmıştır. Yazılım geliştirme süreci boyunca kesintisiz iletişim ve ekip çalışmasını kolaylaştırmayı amaçlar. En başından beri, iş birliğini sadeleştiren ve potansiyel darboğazları en aza indiren araçlar sunarak geliştiricilerin ve ekiplerin daha etkili birlikte çalışmalarını hedeflemiştir.

Ölçeklenebilirlik ve esneklik

GitLab, bir yan projede çalışan küçük bir geliştirme grubu da olsanız büyük bir kurumsal yapı da olsanız ekibinizle birlikte ölçeklenecek şekilde tasarlanmıştır. Platform, bulut tabanlı ve kendi kendine barındırılan dağıtımları destekler; bu da ekiplerin GitLab’ı kendi güvenlik ve performans ihtiyaçlarına göre uyarlayabileceği anlamına gelir.

Güvenlik ve uyumluluk

Statik ve dinamik kod analizi, konteyner taraması ve zafiyet yönetimi gibi özellikler, GitLab kullanıcılarının uygulamalarını en baştan güvenli hâle getirmelerine yardımcı olur. Ayrıca GitLab, güvenliği sonradan düşünülen bir unsur değil, geliştirme sürecinin önemli bir parçası yapmak için DevOps en iyi uygulamalarını ekosistemine entegre eder.

GitLab vs GitHub vs Bitbucket

GitLab’a alternatif çözümler arasında GitHub ve Bitbucket bulunur. Hangisini kullanmalısınız? Tipik bir geliştirici yanıtı vereyim: “Duruma bağlı.” SDLC yönetim aracınızdan hangi gereksinimleri beklediğinizi değerlendirmek çok önemlidir. Öyleyse, GitLab rakiplerine karşı nasıl konumlanıyor, bakalım.

GitLab ve GitHub

GitHub, popüler bir dağıtık sürüm kontrol sistemi olan Git üzerine kurulu, sürüm kontrolü ve iş birliği için web tabanlı bir platformdur. 2008’de Tom Preston-Werner, Chris Wanstrath ve PJ Hyett tarafından oluşturulan GitHub’ın temel amacı, geliştiricilerin projelerde daha verimli iş birliği yapmasına yardımcı olmak için Git’e kullanıcı dostu bir arayüz sağlamaktı.

Başlangıçta açık kaynak topluluğu içinde popüler olan GitHub, hem herkese açık hem de özel depoları barındırmak için başvurulan platform hâline geldi. Milyonlarca geliştirici, kod tabanlarını dünya genelinde paylaşmak ve katkıda bulunmak için GitHub’ı kullanıyor.

Yaş olarak, GitHub 2008’de, GitLab’dan üç yıl önce piyasaya çıktı; GitLab ise 2011’de Dmitriy Zaporozhets ve Valery Sizov tarafından oluşturuldu. Popülerlik açısından GitHub, pazara erken girişi ve açık kaynak topluluğu tarafından geniş çapta benimsenmesi sayesinde geleneksel olarak daha büyük bir kullanıcı tabanına sahip olmuştur. GitHub’ın geniş herkese açık depo ekosistemi ve Linux, Node.js ve React gibi açık kaynak projelerdeki önemli rolü, popülaritesini daha da pekiştirmiştir.

GitLab, GitHub’a göre daha küçük bir kullanıcı tabanına sahip olsa da özellikle entegre bir geliştirme ve dağıtım çözümü arayan DevOps ekipleri ve işletmeler arasında önemli bir ivme kazanmıştır. GitLab, aynı ekosistemde CI/CD, proje yönetimi ve güvenlik özelliklerini içeren hepsi bir arada bir DevSecOps platformu sunmaya odaklanarak kendine bir niş yaratmıştır. Buna karşılık GitHub, benzer işlevselliğe ulaşmak için üçüncü taraf entegrasyonlarına dayanır; bu da projelerin karmaşıklığını artırabilir.

GitHub hakkında daha fazla bilgi edinmek isterseniz GitHub Foundations kursu ile başlamanızı öneririm.

GitLab ve Bitbucket

Bitbucket da web tabanlı bir sürüm kontrol depo barındırma hizmetidir; ancak başlangıçta Mercurial sürüm kontrol sistemini desteklemek üzere oluşturulmuş, daha sonra tamamen Git’e geçmiştir.

GitHub gibi Bitbucket da 2008’de Jesper Nøhr tarafından başlatıldı ve 2010’da Atlassian tarafından satın alındı. İlk aşamada, küçük ve büyük ekipler için iş birliğine dayalı bir ortam sağlamak üzere tasarlandı ve Jira ile Confluence gibi Atlassian araçlarıyla derin entegrasyon sundu. Bu nedenle, platform genellikle proje yönetimi ve konu takibi için Atlassian ekosistemine güvenen kuruluşlardaki geliştirme ekipleri tarafından kullanılır.

Bunun sonucunda, GitLab hepsi bir arada DevOps yetenekleri sayesinde daha geniş bir kullanıcı tabanı kazanmıştır. Bitbucket, öncelikle özel depolara ve kurumsal kullanıcılara odaklandığı için GitHub veya GitLab kadar halka dönük popülariteye sahip olmayabilir. Ve proje takibi için Jira ile iyi entegre olmasına rağmen, Bitbucket yazılım geliştirme yaşam döngüsünü otomatikleştirme konusunda GitLab’ın derinliğine sahip değildir.

GitLab vs GitHub vs Bitbucket: Karşılaştırma genel bakış

Kriter

GitLab

GitHub

Bitbucket

Çıkış yılı

2011

2008

2008

Kurucular

Dmitriy Zaporozhets, Valery Sizov

Tom Preston-Werner, Chris Wanstrath, PJ Hyett

Jesper Nøhr

Ana şirket

Bağımsız (özel)

Microsoft (2018’de satın alındı)

Atlassian (2010’da satın alındı)

İlk amaç

Git tabanlı depo ve entegre DevOps platformu

Git deposu barındırma ve iş birliği

Başlangıçta Mercurial’ı destekledi, daha sonra Git’e geçti

Ana odak

CI/CD, güvenlik ve proje yönetimi özellikleriyle hepsi bir arada DevSecOps platformu

Git tabanlı projelerde iş birliği

Jira ve Confluence gibi Atlassian araçlarıyla entegrasyon

Birincil kullanıcılar

DevOps ekipleri, işletmeler, geliştiriciler

Açık kaynak topluluğu, geliştiriciler, işletmeler

Atlassian ekosistemini kullanan ekipler, kurumsal kullanıcılar

Popülerlik

Özellikle DevOps ve kurumsal benimsemeyle artıyor

Geniş kullanıcı tabanı, açık kaynakta popüler

Halka açık depolarda daha düşük popülerlik; kurumsal ve özel kullanıma odaklı

Depo desteği

Git

Git

Git (2020’ye kadar başlangıçta Mercurial’ı destekledi)

CI/CD entegrasyonu

Yerleşik yerel CI/CD boru hatları

GitHub Actions (daha sonra tanıtıldı)

Yerleşik CI/CD boru hatları, ancak GitLab kadar kapsamlı değil

Güvenlik özellikleri

Statik ve dinamik kod analizi, zafiyet yönetimi, konteyner taraması

GitHub Advanced Security ile sunulan güvenlik özellikleri

GitLab’a kıyasla sınırlı güvenlik özellikleri

Proje yönetimi

Yerleşik araçlar (konular, kilometre taşları, burndown grafikleri, etiketler)

GitHub Projects (üçüncü taraf entegrasyonlarla)

Proje takibi için Jira ile güçlü entegrasyon

Diğer araçlarla entegrasyon

Slack, Jira, Docker, Kubernetes ve diğer araçlarla entegre olur

Üçüncü taraf araçlarla güçlü entegrasyon

Atlassian araçlarıyla (Jira, Confluence) derin entegrasyon

Kendi kendine barındırma seçeneği

Evet (GitLab Self-Managed)

Evet (GitHub Enterprise)

Evet (Bitbucket Data Center)

En uygun kullanım

Hepsi bir arada çözüm arayan işletmeler ve DevOps ekipleri

Açık kaynak projeleri ve genel Git iş birliği

Proje yönetimi için Atlassian araçlarını kullanan kurumsal ekipler

Güçlü yönler

Hepsi bir arada platform (sürüm kontrolü, CI/CD, güvenlik, proje yönetimi)

Geniş açık kaynak topluluğu, güçlü geliştirici iş birliği

Atlassian entegrasyonu, kurumsal iş akışları için uygun

Zayıf yönler

GitHub’a kıyasla açık kaynak projeler için biraz daha küçük topluluk

Tam DevOps yaşam döngüsü için üçüncü taraf araçlara güçlü bağımlılık

Halka dönük daha az depo, GitLab’a göre daha az DevOps özelliği

GitLab ile Nasıl Başlanır

GitLab’ı keşfetmek isteyenler için platform, doğrudan bir başlangıç süreci sunar. İşte nasıl başlayacağınız.

Bir GitLab hesabı oluşturma

Başlamak için kayıt olun ve ücretsiz bir GitLab hesabı edinin.

GitLab kayıt sayfası

GitLab kayıt sayfası

Kayıt olduktan sonra:

  • Kimlik doğrulama için SSH anahtarlarını ayarlayın (güvenli Git işlemleri için önerilir).
  • Şuraya giderek ilk deponuzu oluşturun: New Project → Create Blank Project.
  • Deponuzu şu komutla klonlayın:
git clone [email protected]:your-username/your-repo.git

Değişiklikleri eklemek ve commit etmek için Git’i kullanın:

git add .
git commit -m "Initial commit"
git push origin main

Projenizi yönetme

GitLab yalnızca sürüm kontrolü için değildir — yerleşik proje yönetimi araçları da sunar:

  • Issues ve Panolar: Görevleri ve hataları GitLab Issues ile takip edin.
  • Kilometre taşları: Çalışmaları sprintlere veya proje fazlarına ayırın.
  • Birleştirme istekleri: Kod değişikliklerini birleştirmeden önce inceleyin ve üzerinde iş birliği yapın.

Bu özellikleri keşfetmekten çekinmeyin!

GitLab’ı CI/CD için kullanma

GitLab’da bir CI/CD boru hattı kurmanın ilk adımı, ` .gitlab-ci.yml' dosyası oluşturmaktır. İşte basit bir örnek:

stages:
  - build
  - test
  - deploy

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

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

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

Bu dosya, boru hattının aşamalarını tanımlar ve kodun derlenmesini, test edilmesini ve dağıtımını otomatikleştirir. Bu boru hatlarını kendi geliştirme iş akışınıza uyacak şekilde yapılandırabilirsiniz.

Otomatik bir boru hattını tetiklemek için bu dosyayı commit edip itin.

GitLab Runners

Boru hatlarını çalıştırmak için GitLab, CI/CD işleri yürüten ajanlar olan GitLab Runner’ları kullanır.

Bunlar yerel altyapıda veya bulutta kurulabilir; böylece ekipler, geliştirme ve test ortamlarını istedikleri gibi yönetebilir.

  • Paylaşılan Runner’lar: GitLab tarafından herkese açık projeler için sağlanır.
  • Kendi barındırdığınız Runner’lar: Kendi sunucularınıza veya bulut örneklerinize kurulur.

Kendi barındırdığınız bir runner kaydetmek için:

gitlab-runner register

Barındırılan runner’ların mimarisi

Barındırılan runner’ların mimarisi | Kaynak: GitLab tarafından barındırılan Runner’lar

Güvenlik ve erişim kontrolü

GitLab’da uygun güvenlik ve erişim kontrolünü sağlamak; kodunuzu korumak, iş birliğini yönetmek ve güvenli geliştirme için en iyi uygulamaları uygulamak açısından kritik öneme sahiptir.

  • Ekip üyelerini şuradan ekleyin: Settings > Members.
  • Depo izinlerini ayarlayın (Guest, Reporter, Developer, Maintainer, Owner).
  • Static Application Security Testing (SAST) gibi GitLab’ın güvenlik özelliklerini kullanın.

GitLab Pages ile statik web sitesi dağıtma

GitLab Pages, statik web sitelerini ücretsiz olarak dağıtmanıza olanak tanır. Kurulum için:

  • public/ klasörü ve bir index.html dosyası oluşturun.
  • Bir .gitlab-ci.yml dosyası ekleyin:
pages:
  stage: deploy
  script:
    - mkdir -p public
    - echo "Hello, GitLab Pages!" > public/index.html
  artifacts:
    paths:
      - public
  • Değişiklikleri itin; web siteniz şu adreste yayında olacaktır: https://yourusername.gitlab.io/repository-name.

Sonuç

GitLab, tüm yazılım geliştirme sürecini yönetmek için güçlü, hepsi bir arada bir çözümdür. Yani, modern geliştirme ve DevOps uygulamalarını destekleyen kapsamlı bir platformdur. Bu yazıda, GitLab’ın temel özelliklerini, avantajlarını, rakiplerinden farklarını ve nasıl başlanacağını ele aldık.

Git’te yeniyseniz veya becerilerinizi geliştirmek istiyorsanız şu kurslara göz atın:

  • Introduction to Git – Sürüm kontrolü, dallanma ve birleştirme dahil Git’in temellerini öğrenin.
  • Intermediate Git – Rebase, birleştirme çakışmalarını çözme ve etkileşimli rebase gibi ileri kavramlarla Git becerilerinizi bir üst seviyeye taşıyın.

Git ve GitLab’ı öğrenerek modern geliştirme ortamlarında verimli çalışmak için donanımlı olacaksınız!

FAQs

GitLab ücretsiz kullanılabilir mi?

Evet! GitLab, depolar, CI/CD ve konu takibi gibi temel DevOps özelliklerini içeren ücretsiz bir katman sunar. Gelişmiş güvenlik, uyumluluk ve kurumsal özelliklere sahip ücretli planlar da vardır.

GitLab kendi kendine barındırılabilir mi?

Evet! GitLab, kuruluşların güvenlik ve veriler üzerinde daha fazla kontrol için GitLab’ı kendi altyapılarında çalıştırmalarına olanak tanıyan kendi kendine barındırılan bir sürüm (GitLab Community Edition) sağlar.

GitLab hangi programlama dillerini destekler?

GitLab, esasen bir Git deposu ve CI/CD platformu olduğundan tüm programlama dillerini destekler. Python, Java, JavaScript, Go, C++ ve daha fazlası için CI/CD boru hatları çalıştırabilir.

GitLab ne kadar güvenli?

GitLab, geliştiricilerin güvenlik açıklarını geliştirme sürecinin erken aşamalarında bulmalarına yardımcı olmak için Statik Uygulama Güvenlik Testi (SAST), Bağımlılık Taraması, Konteyner Taraması ve Gizli Bilgi Tespiti gibi güvenlik özelliklerini içerir.

GitLab’ı kişisel projelerim için kullanabilir miyim?

Kesinlikle! GitLab, ücretsiz planda bile sınırsız özel depo, yerleşik CI/CD ve konu takibi sunarak kişisel projeler için harikadır.

GitLab üçüncü taraf araçlarla entegre olur mu?

Evet! GitLab, geliştirme iş akışınızı iyileştirmek için Jira, Slack, Kubernetes, AWS, Google Cloud, Terraform ve daha birçoğuyla entegrasyonları destekler.

GitLab yedeklemeleri nasıl ele alır?

GitLab, kendi kendine barındırılan örnekler için zamanlanmış yedeklemeler, replikasyon ve veri güvenliği için bulut depolama desteği dahil yedekleme ve felaket kurtarma seçenekleri sağlar.

Projelerimi GitHub veya Bitbucket’tan GitLab’a taşıyabilir miyim?

Evet! GitLab, kullanıcıların GitHub, Bitbucket ve diğer platformlardan depoları, konuları ve birleştirme isteklerini sorunsuz bir şekilde taşımalarına olanak tanıyan içe aktarma araçları sağlar.

Kurtis Pykes

Yazar

Kurtis Pykes

Konular

İlgili