Skip to main content
DevOps

GitHub Actions ile CI/CD Rehberi: Workflow, Matrix Build ve Deployment

Mart 29, 2026 5 dk okuma 16 views Raw
Ayrıca mevcut: en
GitHub Actions CI/CD otomasyon ve DevOps
İçindekiler

GitHub Actions Nedir?

GitHub Actions, GitHub'ın yerleşik CI/CD (Continuous Integration / Continuous Delivery) platformudur. 2019 yılında genel kullanıma sunulan bu araç, yazılım geliştirme süreçlerinin otomasyonunu doğrudan GitHub deposu içinden yönetmenizi sağlar. Kod değişikliklerini otomatik olarak test etme, derleme, paketleme ve dağıtma gibi işlemleri YAML tabanlı iş akışlarıyla tanımlayabilirsiniz.

GitHub Actions'ın en büyük avantajı, versiyon kontrol sistemi ile CI/CD aracının aynı platform üzerinde entegre olmasıdır. Ayrı bir Jenkins, CircleCI veya Travis CI kurulumuna gerek kalmadan, tüm otomasyon süreçlerinizi GitHub üzerinde yönetebilirsiniz.

Temel Kavramlar

Workflow (İş Akışı)

Workflow, bir veya birden fazla job içeren otomatik bir süreçtir. YAML dosyası olarak .github/workflows dizininde tanımlanır. Her workflow bir veya birden fazla tetikleyici (trigger) ile başlatılabilir.

Event (Olay)

Workflow'u tetikleyen GitHub etkinlikleridir. En yaygın kullanılanlar:

  • push: Kod push edildiğinde tetiklenir
  • pull_request: Pull request açıldığında, güncellendiğinde veya kapatıldığında
  • schedule: Cron ifadesiyle zamanlanan periyodik çalışma
  • workflow_dispatch: Manuel tetikleme
  • release: Yeni bir sürüm yayımlandığında
  • issue: Issue oluşturulduğunda veya güncellendiğinde

Job (İş)

Bir workflow içindeki bağımsız çalışma birimidir. Her job kendi runner'ında çalışır. Job'lar varsayılan olarak paralel çalışır, ancak needs ifadesiyle bağımlılık tanımlanabilir.

Step (Adım)

Bir job içindeki bireysel görevlerdir. Her step ya bir shell komutu ya da bir action çalıştırır. Step'ler sıralı olarak çalışır ve aynı runner ortamını paylaşır.

Runner

Job'ların çalıştırıldığı sanal veya fiziksel makinalardır. GitHub, Ubuntu Linux, Windows Server ve macOS runner'ları sunmaktadır. Özel ihtiyaçlar için self-hosted runner kullanılabilir.

İlk Workflow Dosyasını Oluşturma

GitHub Actions workflow dosyaları .github/workflows dizininde .yml veya .yaml uzantısıyla oluşturulur. Temel bir CI workflow'u şu bileşenlerden oluşur: workflow adı, tetikleyici olay tanımı, job tanımı, runner seçimi ve step'ler.

Temel Workflow Yapısı

Bir workflow dosyasında önce name ile iş akışının adı belirlenir. Ardından on bloğunda tetikleyiciler tanımlanır. jobs bloğunda ise çalışacak işler ve adımları yer alır. Her job runs-on ile hangi işletim sisteminde çalışacağını belirtir ve steps ile sıralı adımları tanımlar.

Actions Marketplace

GitHub Actions Marketplace, topluluk tarafından geliştirilen binlerce hazır action içerir. Bu action'lar workflow'larınızda yeniden kullanılabilir bileşenler olarak kullanılır ve yaygın görevleri kolaylaştırır.

En Popüler Action'lar

ActionAmaçKullanım
actions/checkoutKodu indirHer workflow'da gerekli
actions/setup-nodeNode.js ortamı kurJavaScript/TypeScript projeleri
actions/setup-dotnet.NET SDK kur.NET projeleri
actions/cacheBağımlılık önbelleğiBuild sürelerini kısaltma
docker/build-push-actionDocker image oluştur ve push etContainer tabanlı deployment
azure/webapps-deployAzure App Service'e deploy etAzure deployment

Özel Action Yazma

Kendi action'larınızı üç farklı yöntemle oluşturabilirsiniz: JavaScript action, Docker container action ve Composite action. Composite action'lar, mevcut step'leri birleştirerek yeniden kullanılabilir yapılar oluşturmanın en basit yoludur.

Matrix Build Stratejisi

Matrix build, aynı job'u farklı konfigürasyonlarla paralel olarak çalıştırmanızı sağlar. Özellikle birden fazla işletim sistemi, programlama dili sürümü veya veritabanı sürümü üzerinde test yapmak için idealdir.

Matrix Kullanım Senaryoları

  • Birden fazla Node.js sürümünde test (16, 18, 20)
  • Birden fazla işletim sisteminde test (Ubuntu, Windows, macOS)
  • Birden fazla veritabanı sürümüyle uyumluluk testi
  • .NET Framework ve .NET Core sürümlerinde paralel build

Matrix Konfigürasyon Seçenekleri

Matrix strategy bloğunda fail-fast ayarı ile bir konfigürasyon başarısız olduğunda diğerlerinin durdurulup durdurulmayacağı belirlenebilir. max-parallel ile aynı anda çalışacak maksimum job sayısı sınırlanabilir. exclude ve include ifadeleriyle belirli kombinasyonlar çıkarılabilir veya eklenebilir.

Secrets ve Güvenlik

CI/CD süreçlerinde API anahtarları, veritabanı şifreleri ve deploy token'ları gibi hassas bilgilerin güvenli yönetimi kritik öneme sahiptir.

GitHub Secrets

GitHub Secrets, hassas verileri şifreli olarak saklar. Repository, environment ve organization düzeyinde secret tanımlanabilir. Secret'lar workflow loglarında otomatik olarak maskelenir.

Güvenlik En İyi Uygulamaları

  • Secret'ları asla kod içinde veya log'larda açığa çıkarmayın
  • Üçüncü taraf action'ları kullanırken belirli commit SHA'sını pin'leyin
  • GITHUB_TOKEN'ın minimum gerekli izinlerle çalışmasını sağlayın
  • Fork'lardan gelen pull request'lerde secret erişimini kısıtlayın
  • Environment protection rules ile deployment onay süreçleri tanımlayın
  • OIDC (OpenID Connect) ile bulut sağlayıcılarına güvenli kimlik doğrulama yapın

Deployment Stratejileri

Bulut Platformlarına Deployment

GitHub Actions, tüm büyük bulut platformlarıyla entegre çalışır. Azure App Service, AWS Elastic Beanstalk, Google Cloud Run, DigitalOcean App Platform ve Vercel gibi servislere otomatik deployment tanımlanabilir.

Docker ve Kubernetes Deployment

Docker image'ları GitHub Actions ile oluşturulup Docker Hub, GitHub Container Registry veya özel registry'lere push edilebilir. Kubernetes ortamlarına kubectl veya Helm chart'ları aracılığıyla deployment gerçekleştirilebilir.

Deployment Ortamları (Environments)

GitHub Environments, deployment süreçlerini kontrol etmek için güçlü bir mekanizma sunar. Her ortam için ayrı secret'lar, koruma kuralları ve onay süreçleri tanımlanabilir. Tipik ortam yapısı: Development, Staging, Production şeklindedir.

Self-Hosted Runners

GitHub'ın sunduğu runner'lar birçok senaryo için yeterli olsa da, bazı durumlarda kendi runner'ınızı barındırmanız gerekebilir.

Self-Hosted Runner Avantajları

  • Özel donanım: GPU, yüksek bellek veya özel işlemci gereksinimleri
  • Ağ erişimi: Dahili ağdaki kaynaklara erişim (veritabanları, servisler)
  • Maliyet kontrolü: Yoğun kullanımda GitHub-hosted runner'lardan daha ekonomik
  • Özelleştirme: Önceden kurulmuş araçlar ve bağımlılıklar
  • Uyumluluk: Kurumsal güvenlik politikalarına uygunluk

Self-Hosted Runner Güvenlik Dikkat Noktaları

Self-hosted runner'lar özellikle açık kaynak projelerde güvenlik riski oluşturabilir. Fork'lardan gelen workflow'ların runner üzerinde zararlı kod çalıştırma riski vardır. Bu nedenle self-hosted runner'ları yalnızca özel (private) depolarda kullanmak önerilir.

İleri Düzey Özellikler

Reusable Workflows

Tekrar eden workflow tanımlarını merkezi bir depoda oluşturup, diğer depolardan referans vererek kullanabilirsiniz. Bu yaklaşım, organizasyon genelinde standart CI/CD süreçleri oluşturmak için idealdir.

Concurrency Control

Aynı workflow'un birden fazla örneğinin eşzamanlı çalışmasını kontrol edebilirsiniz. cancel-in-progress ayarı ile yeni bir çalışma başladığında önceki çalışmayı otomatik olarak iptal edebilirsiniz.

Artifact Yönetimi

Build çıktıları, test raporları ve log dosyaları artifact olarak saklanabilir. actions/upload-artifact ve actions/download-artifact action'ları ile job'lar arası veri paylaşımı yapılabilir.

Cache Stratejileri

Bağımlılık indirme sürelerini dramatik şekilde azaltmak için cache kullanılır. npm, pip, NuGet, Maven ve Gradle gibi paket yöneticilerinin cache'leri workflow çalışmaları arasında paylaşılabilir.

GitHub Actions, sadece bir CI/CD aracı değil, aynı zamanda geliştirme süreçlerinizin tamamını otomatikleştirebileceğiniz güçlü bir otomasyon platformudur. Issue yönetiminden kod incelemesine, test otomasyonundan deployment'a kadar her adımı kapsayabilir.

Sonuç

GitHub Actions, modern yazılım geliştirme süreçlerinde CI/CD otomasyonunu erişilebilir ve güçlü bir şekilde sunar. YAML tabanlı konfigürasyonu, zengin marketplace ekosistemi, matrix build desteği ve esnek deployment seçenekleriyle her ölçekteki proje için uygun bir çözümdür. Güvenlik en iyi uygulamalarını takip ederek, self-hosted runner'ları gerektiğinde kullanarak ve reusable workflow'larla standardizasyon sağlayarak, ekibinizin geliştirme verimliliğini önemli ölçüde artırabilirsiniz.

Bu yazıyı paylaş