İçindekiler
- Hızlı Karşılaştırma
- GitHub Actions Runner: GitHub işlerini kendi altyapında çalıştır
- GitLab Runner: Çok yönlü executor desteğiyle ölçeklenebilir
- Drone: Container-first, minimalist CI yaklaşımı
- Jenkins Agent: Eski ama esnek, eklenti zenginliğiyle
- Argo Workflows: Kubernetes-native iş akışları
- Tekton Pipelines: CI/CD için Kubernetes CRD'leri
- Hangisini Seçmelisin?
- Sıkça Sorulan Sorular
Git tabanlı projelerinde sürekli entegrasyon ve dağıtım işlerini kendi altyapında çalıştırmak istiyorsan "self-hosted CI/CD runner" çözümleri işini kolaylaştırır. Bu rehberde GitHub Actions Runner, GitLab Runner, Drone gibi popüler self-hosted seçeneklerin artılarını, eksilerini ve hangi senaryoda daha uygun olduklarını anlatıyorum.
Öncelikle hangi runner'ın ne işe yaradığını, hangi platformlarda rahat çalıştığını ve maliyet/karmaşıklık açısından neler gerektirdiğini karşılaştırmak faydalı olur. Aşağıdaki hızlı tabloyla başlayıp sonra her bir seçeneği detaylandırıyorum; böylece ihtiyaçlarına en uygun ajan/runner'ı seçebilirsin.
Hızlı Karşılaştırma
| Program | Platform | En iyi olduğu iş | Ücret |
|---|---|---|---|
| GitHub Actions Runner | Windows, Linux, macOS, Docker | GitHub Actions işlerini kendi sunucunda koşma | Ücretsiz (self-hosted) |
| GitLab Runner | Windows, Linux, macOS, Kubernetes, Docker | GitLab CI/CD ile entegrasyon; çoklu executor | Ücretsiz, açık kaynak |
| Drone | Linux, Docker, Kubernetes | Hafif, container-first pipeline çalıştırma | Açık kaynak (self-hosted) |
| Jenkins Agent | Windows, Linux, macOS, Docker | Esnek agent yönetimi, geniş eklenti ekosistemi | Açık kaynak (Jenkins) |
| Argo Workflows | Kubernetes | Kubernetes-native iş akışları ve container task'lar | Açık kaynak |
| Tekton Pipelines | Kubernetes | Cloud-native pipeline CRD'leri, CI/CD otomasyonu | Açık kaynak |
GitHub Actions Runner: GitHub işlerini kendi altyapında çalıştır
GitHub Actions Runner, GitHub Actions iş akışlarını GitHub-hosted runner yerine kendi sunucunda veya sanal makinede çalıştırmana izin verir. Eğer depoların GitHub'da ise, gizli veriyi kurum içindeki ağda tutmak veya özel donanım (GPU, ARM) kullanmak için en mantıklı seçeneklerden biridir.
Kurulum genelde bir kullanıcı hesabı veya GitHub Organization ile runner kaydetmeyi, gerekli etiketleri ayarlamayı ve runner servisini çalıştırmayı içerir. Self-hosted runner'lar Windows, Linux ve macOS üzerinde çalışabiliyor; Docker içinde çalıştırmak da yaygın bir yaklaşımdır.
Artıları
- GitHub Actions ile tam uyumlu, ekstra entegrasyon gerektirmez
- Farklı işletim sistemlerinde ve Docker içinde çalıştırılabilir
- Özel donanım veya ağ içinde çalıştırma imkanı sunar
Eksileri
- Yönetimi ve güvenliği tamamen senin sorumluluğunda
- GitHub tarafındaki bazı özellikler sadece hosted runner'larda optimizasyon gerektirebilir
Kimler için? Depoları GitHub'da tutan ve iş akışlarını kendi sunucusunda/özel donanımda çalıştırmak isteyen ekipler için.
GitLab Runner: Çok yönlü executor desteğiyle ölçeklenebilir
GitLab Runner, GitLab CI/CD ile eşleşen, farklı executor türlerini destekleyen açık kaynak bir runner uygulamasıdır. Shell, Docker, Docker Machine, Kubernetes gibi executor seçenekleri sayesinde hem basit VM'lerde hem de container cluster'larda çalışacak şekilde yapılandırılabilir.
GitLab Runner genellikle büyük ekiplerde tercih edilir çünkü otomatik kayıt, sadece belirli projelere atanma ve belirli etiketlerle runner havuzları oluşturma gibi özellikleri vardır. Ayrıca Kubernetes üzerinde auto-scaling gibi ileri senaryolarla entegrasyonu güçlüdür.
Artıları
- Docker ve Kubernetes ile güçlü entegrasyon
- Proje/instance bazlı runner havuzları oluşturulabiliyor
- Açık kaynak ve geniş topluluk desteği
Eksileri
- Karmaşık ölçekleme kurulumları başlangıçta kafa karıştırıcı olabilir
- Çok sayıda executor tipiyle yönetim yükü artabilir
Kimler için? GitLab kullanan, ölçeklenebilir ve farklı executor seçenekleriyle esnek altyapı kurmak isteyen ekipler için.
Drone: Container-first, minimalist CI yaklaşımı
Drone, pipeline'ları container adımları olarak tanımlayan ve Go ile yazılmış hafif bir CI sunucusudur. YAML tabanlı tanımlamalar ve her job'un ayrı container'larda çalışması, izolasyon ve tekrarlanabilirlik sağlar. Drone'un kendisi ve runner'ları açık kaynak olarak sunulur.
Drone, özellikle Docker-centric iş akışlarında ve Kubernetes ile birlikte kullanıldığında temiz, minimal bir deneyim sağlar. Plugin yapısı sayesinde ihtiyaç duyduğun adımları ekleyebilirsin; ayrıca Git sağlayıcılarıyla entegrasyon seçenekleri mevcut.
Artıları
- Her job ayrı container'da çalışır; izolasyon güçlü
- Minimal ve modern tasarım, öğrenmesi görece hızlı
- Kubernetes ile iyi çalışır
Eksileri
- Eklenti ekosistemi Jenkins kadar geniş değil
- Çok karmaşık enterprise ihtiyaçlar için ek konfigürasyon gerekebilir
Kimler için? Container tabanlı, hafif ve modern CI isteyen küçük-orta ölçekli takımlar için.
Jenkins Agent: Eski ama esnek, eklenti zenginliğiyle
Jenkins, uzun yıllardır CI/CD alanında kullanılan, çok sayıda eklenti ve agent tipi olan bir platformdur. Jenkins agent'lar (eski adıyla slave'ler) farklı ortam ve protokoller üzerinden master ile iletişim kurup job'ları çalıştırır. Hem Docker hem de klasik VM/işletim sistemi runner'ları desteklersin.
Jenkins'in güçlü yanı; hemen her ihtiyaca uygun bir eklentinin bulunabilmesi ve geniş topluluk desteğidir. Dezavantajı ise yönetiminin ve bakımının daha zahmetli olabilmesi; ayrıca modern cloud-native ergonomik deneyimler bazı durumlarda eksik kalabiliyor.
Artıları
- Çok geniş eklenti ve entegrasyon desteği
- Hibrid altyapılarda (VM + container) esneklik sağlar
- Büyük kurumsal projelerde yaygın ve bilindik bir çözüm
Eksileri
- Yönetimi ve bakım yükü yüksek olabilir
- Arayüz ve modern pipeline deneyimi diğerlerine göre daha eski hissi verebilir
Kimler için? Çok çeşitli eklenti ile özelleştirilmiş, heterojen altyapılarda çalışan ve geniş entegrasyon gerektiren ekipler için.
Argo Workflows: Kubernetes-native iş akışları
Argo Workflows, Kubernetes üzerinde çalışan container tabanlı iş akışları yürütmek için tasarlanmış bir projedir. CI/CD görevleri, veri işleme pipeline'ları ve diğer otomasyon işleri için Kubernetes CRD'leri (Custom Resource Definitions) kullanır.
Argo, Kubernetes ekosistemine derin entegrasyon sağladığı için eğer altyapın zaten k8s ise doğal bir tercih olabilir. İşlerin pod'lar içinde koşması, parallelizm ve DAG tabanlı iş akışları gibi güçlü özellikler sunar.
Artıları
- Kubernetes ortamlarında doğal ve verimli çalışır
- DAG ve parallel job desteği güçlüdür
- Cloud-native ve deklaratif yapı sunar
Eksileri
- Kubernetes bilgin olmadan kurulum ve yönetimi daha zor olabilir
- Küçük projelerde aşırı karmaşık gelebilir
Kimler için? Kubernetes tabanlı altyapılarda, cloud-native pipeline ihtiyacı olan takımlar için.
Tekton Pipelines: CI/CD için Kubernetes CRD'leri
Tekton, Kubernetes üzerinde CI/CD boru hatları oluşturmak için tasarlanmış bir başka cloud-native projedir. Tekton, pipeline adımlarını CRD'ler aracılığıyla tanımlar ve güçlü yeniden kullanılabilir task modeline sahiptir. Özellikle Kubernetes operatörleri ve platform ekipleri arasında popülerdir.
Tekton, modüler ve standardize edilebilir pipeline bileşenleri sunar; platform yöneticileri kendi Tekton temelli CI platformlarını kurabilirler. Ayrıca çeşitli topluluk eklentileri ve kaynakları mevcuttur.
Artıları
- Tekton, pipeline bileşenlerini tekrar kullanılabilir şekilde tanımlar
- Kubernetes-native ve modüler mimari
- Platform ekipleri için iyi bir yapı sunar
Eksileri
- Yine Kubernetes bilgisi gerektirir; tek başına karmaşık olabilir
- Başlangıçta yapılandırma ve kavram öğrenimi zaman alabilir
Kimler için? Kubernetes üzerinde standardize, platform seviyesinde CI/CD kurmak isteyen ekipler için.
Hangisini Seçmelisin?
- Depolar GitHub'da ve özel donanım kullanacaksan: GitHub Actions Runner
- Depolar GitLab'da ve farklı executor'lar istiyorsan: GitLab Runner
- Container-first, hafif ve modern bir çözüm istersen: Drone
- Çok sayıda eklenti ve heterojen altyapı gerekiyorsa: Jenkins Agent
- Tamamen Kubernetes odaklıysanız ve DAG/parallelizm istiyorsanız: Argo Workflows
- Platform seviyesinde standart, CRD tabanlı pipeline kuracaksan: Tekton Pipelines
Sıkça Sorulan Sorular
Self-hosted runner kullanmak güvenlik açısından riskli mi?
Self-hosted runner'lar güvenlik açısından ek sorumluluk getirir: runner'ın çalıştığı makinelerin güvenliği, erişim anahtarlarının yönetimi ve ağ izolasyonu senin tarafında sağlanmalıdır. En iyi uygulama olarak ayrılmış runner makineleri, en düşük yetki ilkesi ve secret yönetimi önerilir.
Kendi sunucumda kaç runner çalıştırabilirim?
Teorik olarak sınırlama yoktur; ancak pratik limitler donanım, ağ ve CI yüküne bağlıdır. Ölçekleme ihtiyacı varsa Docker/Kubernetes tabanlı çözümlerle otomatik ölçekleme stratejileri kurmak faydalıdır.
Kubernetes kullanmıyorum, Argo veya Tekton seçmeli miyim?
Argo ve Tekton Kubernetes-native çözümler olduğu için Kubernetes bilgisi yoksa ve altyapın k8s değilse başlangıç için fazla karmaşık olabilir. Bu durumda GitHub/GitLab runner veya Drone gibi daha basit self-hosted seçenekler daha uygundur.
Ücretsiz mi gerçekten? Hangi maliyetleri göz önünde bulundurmalıyım?
Bu rehberdeki çoğu proje açık kaynak ve yazılım olarak ücretsizdir; ancak maliyetler genelde altyapı (sunucu, depolama, ağ), bakım ve operasyonel çalışmadan kaynaklanır. Hosted CI sağlayıcılarını kullanmaktan kaçınıp self-hosted tercih edersen, bu işletim maliyetlerini hesaba katmalısın.
Birden fazla runner/agent kullanmanın avantajı nedir?
Farklı runner türleri farklı iş yükleri için optimize edilebilir: örneğin CPU-intensif işler için özel makineler, GPU gerektiren işler için ayrı runner'lar ya da güvenlik sebebiyle izole runner havuzları oluşturabilirsin. Bu, verimlilik ve güvenlik açısından avantaj sağlar.







