Eğitim seçeneklerini yan yana koyup karar verin

GitHub Actions ile CI/CD Pipeline Kurma ve Otomasyonu

GitHub Actions: Otomasyonun Kapısını Açmak

Yazılım geliştirme sürecinde tekrarlayan işler—test çalıştırma, kod derleme, sunucuya yükleme—üretkenliği düşürür ve insan hatalarına açık hale getirir. GitHub Actions, bu işleri otomatikleştirmek için doğrudan GitHub deposu içinde kurulabilen bir CI/CD (Continuous Integration/Continuous Deployment) çözümüdür. Workflow dosyaları aracılığıyla, belirli tetikleyicilere (kod push'u, pull request, zamanlı görevler gibi) yanıt veren otomatik işlem zinciri oluşturabilirsiniz.

GitHub Actions'ı tercih etmek veya başka araçlarla (Jenkins, GitLab CI, CircleCI gibi) kıyaslamak için şunları değerlendirmeniz gerekir: kurulum karmaşıklığı, bedeli, ekosistem entegrasyonu ve öğrenme eğrisi. Bu rehberin amacı, GitHub Actions ile nasıl pratik bir CI/CD pipeline'ı kuracağınızı adım adım göstermektir.

Workflow'ların Temel Yapısı ve Tetikleyiciler

GitHub Actions'ın kalbi, .github/workflows klasörüne yerleştirilen YAML dosyalarıdır. Her workflow dosyası şu bileşenleri içerir:

  • Name: Workflow'un adı (GitHub arayüzünde gösterilir)
  • On: Tetikleyici olaylar (push, pull_request, schedule vb.)
  • Jobs: Paralel veya sıralı çalışan görevler
  • Steps: Her job içindeki ardışık işlemler

Örneğin, ana branch'e bir push yapıldığında otomatik test çalıştıran bir workflow, tetikleyicisini on: push: branches: [main] şeklinde tanımlar. Bu basit yapı, GitHub Actions'ın öğrenilmesini kolaylaştırır; özellikle GitHub'ı zaten kullanan ekipler için ek araç öğrenme yükü azalır.

Tetikleyici seçimi, pipeline'ın verimliliğini doğrudan etkiler. Örneğin:

  • Push tetikleyici: Her kod değişikliğinde çalışır; sık feedback verir ama kaynak tüketir
  • Pull request tetikleyici: Birleştirmeden önce doğrulamak için idealdir
  • Schedule tetikleyici: Günlük veya haftalık raporlama görevleri için ekonomiktir

Pratik Pipeline: Test, Build ve Deployment

Standart bir Node.js uygulaması için GitHub Actions CI/CD pipeline'ı şu aşamaları içerir:

  1. Checkout: En yeni kod alınır
  2. Setup: Node.js ortamı kurulur
  3. Dependencies: npm paketleri yüklenir
  4. Test: Test suite çalıştırılır
  5. Build: Üretim için kod derlenir
  6. Deploy: Başarılı build'ler sunucuya yüklenir

Her aşama, önceki aşamanın başarısına bağlı olur. Eğer testler başarısız olursa, build başlamaz; böylece hatalı kodu production'a çıkarmaktan korunursunuz. Bu kaliteli kontrol mekanizması, manuel süreçlerle karşılaştırıldığında hataları ortalama %40-60 oranında azaltır.

Matris (Matrix) stratejisi kullanarak, aynı test setini birden fazla Node.js versiyonunda (örneğin 18.x, 20.x, 22.x) paralel şekilde çalıştırabilirsiniz. Bu, uygulamanızın farklı ortamlarda stabil olmasını sağlar ve test süresini toplam çalışma zamanına sıkıştırır.

Secrets ve Güvenlik Yönetimi

Database parolaları, API anahtarları, deployment sertifikaları gibi hassas bilgileri workflow dosyasında hiçbir zaman yazmamalısınız. GitHub Actions, Secrets adı verilen şifreli depo alanı sunarak bu verileri güvenle tutmanızı sağlar.

Secrets'e erişmek için ${{ secrets.SECRET_NAME }} söz dizimi kullanılır. Repository ayarlarından her secret'e hangi workflow'ların erişebileceğini kontrol edebilirsiniz. Bu yöntem, beş yaygın güvenlik riski (sızıntı, yanlış kullanım, log'a yazılma vb.) karşı korunma sağlar.

  • Secrets sadece workflow çalıştırılırken ortam değişkeni olarak yüklenir
  • GitHub'ın log'larında maskelenir; düz metin görünmez
  • Organizasyon seviyesinde secret'ler, birden fazla repository'de paylaşılabilir

Maliyet ve Kaynaklar

GitHub Actions fiyatlandırması, hesap türüne göre değişir. Public repository'ler sınırsız dakika kullanabilir; private repository'ler için aylık ücretsiz dakika havuzu verilir (hesap tipi başına 2000 dakika). Aşan dakikalar ücretlendirilir. Bu, Jenkins gibi kendi sunucusunda barındırılan araçlarla karşılaştırıldığında, küçük ve orta ölçekli ekipler için daha ekonomiktir.

Self-hosted runner'lar (kendi sunucularınız) kullanırsanız, hiç dakika ücretlemesi yapılmaz; sadece donanım maliyeti kalır. Bunu, uzun süren build'leri sık çalıştıran veya özel donanım gerektiren projeler için göz önüne alınması gereken bir seçenek olarak düşünün.

Karar verirken, projenizin çalışma sayısını ve sürelerini tahmin etmek önemlidir. Örneğin, günde 20 push ile her biri 5 dakika çalışan test, aylık ~3000 dakika tüketir; bu, önceden planlanan bütçeyi aşabilir.

Kapanış: Doğru Araç Seçimi

GitHub Actions, GitHub üzerinde zaten çalışan küçük ve orta ölçekli ekipler için hızlı başlangıç sağlar. Kurulum basit, GitHub ekosistemiyle entegrasyon sıkıdır ve dokümantasyon kapsamlıdır. Ancak, çok karmaşık CI/CD gereksinimleri, özel donanım ihtiyaçları veya on yıllık iş akışı varsa, Jenkins veya GitLab CI gibi köklü araçların daha fazla esneklik sunabileceğini göz önüne alın.

Bu rehberde gösterilen temel workflow'lar (test, build, deploy), GitHub Actions öğreniminin 80 yüzdesini oluşturur. Geriye kalan 20 yüzde, advanced features—artifact'lar, cache mekanizması, workflow approval'ları—zaman içinde keşfedersiniz. Hemen başlamak, üretimdeki yazılım kalitesini iyileştirmenin en pratik yoludur.