Devops

Github Actions VS Gitlab CI/CD

Günümüzde Devops Kültürünün amacı , yazılım şirketlerinin , rekabet avantajı sağlaması ve agile yapısına uyum sağlaması için, developer takımının yazdığı kod değişikliklerini küçük parçalar halinde test edip, üretime koşturmaktır.

Bu amaca hizmet eden en iyi best practice mimarilerden Jenkins, Circle CI, Github Actions ve Gitlab çok popülerdir.

GitHub Actions ve GitLab CI/CD, Sürekli Entegrasyon / Sürekli Dağıtım (CI/CD) süreçlerini otomatikleştirmek için kullanılan güçlü araçlardır. Ancak farklı güçlü yönlere sahiptirler.

GitHub Actions (GitHub)

  • GitHub depoları için entegre bir CI/CD çözümüdür
  • Yapılandırmalar YAML tabanlıdır ve .github/workflows/ klasöründe yer alır
  • Binlerce hazır aksiyon içeren gelişmiş bir marketplace desteğine sahiptir
  • https://github.com/marketplace?type=actions
  • GitHub kullanıcıları ve açık kaynak projeler için çok idealdir

GitLab CI/CD (GitLab)

  • Tümleşik bir DevOps Pipeline sunar
  • Yapılandırmalar proje kök dizinindeki .gitlab-ci.yml dosyasında yer alır
  • Güvenlik taramaları, izleme ve diğer DevOps araçları built in şeklinde olarak gelir
  • Kurumsal ekipler ve kendi sunucusunda barındırmak isteyen Enterprise büyük şirketler için daha uygundur

Özellik GitHub Actions GitLab CI/CD
Ease of Use Basit YAML tabanlı iş akışları, GitHub Marketplace üzerinden hazır aksiyon desteği YAML tabanlı ancak yeni başlayanlar için karmaşık olabilir
CI/CD Pipeline CI/CD odaklıdır ancak tam DevOps için üçüncü parti araçlara bağımlıdır CI/CD + DevOps tam entegre şekilde sunulur
Runner Management Hosted ve self-hosted runner seçenekleri mevcuttur Kubernetes, Docker ve sanal makinelerle daha esnek self-hosting imkanı
Security Features Dependabot, CodeQL scanning desteği Gömülü security scanning, compliance ve vulnerability management özellikleri
Third-Party Integrations Birçok üçüncü parti aksiyonun bulunduğu marketplace Entegrasyon desteği vardır ancak GitHub kadar fazla değildir
Free CI/CD Minutes Aylık 2.000 dakika (ücretsiz plan) Aylık 400 dakika (ücretsiz plan), self-hosted için daha fazla
Self-Hosting Sadece GitHub Enterprise ile mümkündür Ücretsiz self-hosting desteği mevcuttur
Best For Açık kaynak projeleri, GitHub kullanan ekipler Kurumsal yapılar, DevOps ağırlıklı ekipler, self-hosting ihtiyacı olanlar



Hangi Durumda Hangisini Tercih Etmeli?

GitHub Actions

Yapay zeka destekli otomasyon (örneğin GitHub Copilot) sizin için önemliyse

GitHub üzerinde çalışıyorsanız ve Üçüncü parti servislerle kolay entegrasyon istiyorsanız Örn: Gitops ArgoCD ya da sadece deploy için aws ecs,lightsail,eks vs.

GitLab CI/CD:

  • Tam kapsamlı bir DevOps çözümüne ihtiyacınız varsa (CI/CD tüm süreç tek bir panel, izleme, güvenlik vb.)
  • Kendi sunucularınızda barındırma ya da Kubernetes tabanlı çözümler tercih ediyorsanız
  • Çalıştırıcılar (runners) ve işlem akışları üzerinde daha fazla kontrol istiyorsanız


Aşağıda, aynı hedefe ulaşan iki farklı örnek YAML yapılandırması görebilirsiniz:


 Node.js projesi için test çalıştırma ve başarılıysa dağıtım yapma işlemi

Açıklama: Push veya pull request durumunda çalışan bir workflow tanımıdır.

Testler çalıştırılır ve başarılıysa dağıtım işlemi yapılır.


on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Deploy application
        run: echo "Deploying application..."

Açıklama:

  • main branchine yapılan push ve pull request’lerde çalışır
  • test flow testleri çalıştırır
  • Testler başarılıysa, deploy aşaması devreye girer
  • GitHub’un sağladığı runner’lar kullanılır

GitLab CI/CD

stages:
  - test
  - deploy

test:
  stage: test
  image: node:18
  script:
    - npm install
    - npm test
  only:
    - main

deploy:
  stage: deploy
  script:
    - echo "Deploying application..."
  only:
    - main
  needs:
    - test

Açıklama:

  • test ve deploy olmak üzere iki aşama tanımlar
  • Resmi Node.js Docker imajı (node:18) kullanılır
  • Test aşaması başarılı olursa dağıtım gerçekleşir
  • GitLab runner’ları (bulutta veya yerel) kullanılır

Her iki araç da oldukça esnek olmakla birlikte, GitLab, daha güçlü yerleşik CI/CD ve DevOps yetenekleri sunar. GitHub Actions ise GitHub ekosistemine sıkı şekilde entegre çalışır ve açık kaynak projeler için oldukça uygundur.


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu