Runners

GitHub Runners, GitHub Actions iş akışlarının (workflow’ların) hangi makine/ortam üzerinde çalışacağını belirler. Yani, bir job çalıştırıldığında aslında “runner” adı verilen bir sunucu ya da bilgisayar (sanal ortam) üzerinde adım adım komutların yürütülmesi gerçekleşir.

1) Runner Seçimi: runs-on

  • YAML dosyanda jobs.<job_id>.runs-on: <runner_type> şeklinde belirttiğin kısım, job’un hangi işletim sistemi / ortamda çalışacağına karar verir.

    • Örnek: runs-on: ubuntu-latest, runs-on: windows-latest, runs-on: macos-latest

name: Multi-label example
on: [push]

jobs:
  build-linux-x64:
    runs-on:
      - self-hosted
      - linux
      - x64
    steps:
      - name: Build
        run: echo "Building on a self-hosted runner that is Linux and x64"
  • İstersen bir liste (array) olarak da verebilirsin. Ancak bu durumda runner, listedeki tüm etiketlere uyan bir runner bulmalıdır. (Örneğin [self-hosted, linux, x64] gibi.)

2) GitHub-Hosted Runner

  • GitHub’ın sağladığı hazır ortamlardır. Sen ubuntu-latest, windows-latest gibi bir değer yazdığında, GitHub senin için otomatik olarak bir sanal makine oluşturur, iş akışı bittiğinde de o makineyi kapatır.

  • Avantajları:

    • Kurulum / bakım gerektirmez. Tüm yönetimi GitHub yapar.

    • Otomatik ölçeklendirir (scaling): Talep arttığında yeni makineler ayarlayabilir.

    • Üç ana işletim sistemi (Ubuntu, Windows, macOS) varyantlarını sunar.

  • Dezavantajları:

    • Konfigürasyon ve işletim sistemi üzerinde kısıtlı kontrolün var. (Örneğin, root erişimi var ama custom kernel vb. kısıtlı.)

    • Kullanım limitleri (dakika/ay) veya ek ücretlendirmeler olabilir (özellikle özel planlarda).

    • Ortam paylaşımlı olduğundan, bazen belirli güvenlik / IP adresi / özel network ihtiyaçlarında sınırlamalar olabilir.

3) Self-Hosted Runner

  • Kendi sunucun (fiziksel makine, VM, hatta Raspberry Pi vb.) üzerine GitHub Actions runner uygulamasını kurarsın. Bu makine GitHub ile haberleşir ve Actions iş akışlarını orada çalıştırırsın.

  • Avantajları:

    • Tam denetim: Kullanacağın donanım, yazılım, OS sürümü tamamen sana bağlı.

    • Özel ağ / veri tabanlarına doğrudan erişim: Şirket içi kaynaklara ya da izole bir ağa erişmek istiyorsan, bu runner’ı o ağa koyabilirsin.

    • Performansını, bellek, disk, CPU gibi kaynakları istediğin gibi ölçeklendirebilirsin.

  • Dezavantajları:

    • Bakım ve güvenlik sorumluluğu sende. Makinenin güncellenmesi, güvenlik yamaları vb. senin görevin.

    • GitHub, o makineyi yönetmiyor; yani ek kapasite gerektiğinde otomatik oluşturmaz. Kendin ayarlamak zorundasın.

4) Standart Boyut vs. Larger Runners (GitHub-Hosted)

  • Standart Boyut: Ücretsiz planların sunduğu normal sanal makineler. Normal bellek/CPU kaynaklarıyla gelirler.

  • Larger (daha büyük makineler) veya “premium” runner seçenekleri, Team ya da Enterprise planlarda sunulur. Daha fazla RAM, CPU, disk alanı, sabit IP gibi özellikleri olabilir.

    • Büyük runner’lar genelde yüksek kaynak isteyen (çok parallel testler, büyük build’lar vb.) projelerde kullanılır.

5) Koşullar, Kotalar ve Özelleştirme

  • Koşullar / Kotalar:

    • GitHub Hosted Runner’larda dakikalık kullanım limitin olabilir (ücretsiz planlarda sınırlı, ücretli planlarda daha yüksek).

    • Self-hosted runner’da GitHub’ın dakika limiti yoktur; ama kendi altyapı maliyetin devreye girer.

  • Özelleştirme:

    • GitHub Hosted Runner’lar “hazır” ortamda belirli yazılımlar (Node, Python, Java, vs.) kurulu gelir.

    • Self-hosted ise tamamen istediğin yazılımı / sürümü kurmakta özgürsün.

Özetle,

  • GitHub-Hosted: Kolay kurulum, anında ölçeklendirme, üç temel işletim sistemine destek, paylaşımlı/standart ortamlara uygun.

  • Self-Hosted: Tüm kontrol ve bakım sende; özel ağ, özel donanım ve ihtiyaçlar varsa ideal.

Workflow’larda “runs-on: ubuntu-latest” ya da “runs-on: self-hosted” diyerek job’un hangi runner’da çalışacağını belirliyorsun. İhtiyacına ve projenin gereksinimlerine göre bu seçimi yaparsın.

Last updated

Was this helpful?