Sorun
GitHub organizasyonlarında çalışan ekipler, farklı projelerde farklı runner tiplerini kullanarak kod inceleme sürecinde tutarsızlıklar yaşayabiliyordu. Bu durum, performans sorunlarına ve güvenlik açıklarına yol açabiliyordu. Özellikle self-hosted runner'ların kullanımında, her bir repository için ayrı ayrı ayar yapılmasının yönetim yükünü artırması ve standartlaşmayı zorlaştırması önemli bir problemdi.
Çözüm: Kuruluş Düzeyinde Runner Kontrolleri
GitHub, kuruluş yöneticilerine aşağıdaki yeni özellikleri sunarak bu soruna çözüm getirdi:
1. Runner Tipi Yönetimi
Yeni runner tipi yapılandırmaları sayesinde, kuruluş yöneticileri aşağıdaki işlemleri gerçekleştirebilir:
- Tüm repository'ler için geçerli olacak default runner tiplerini tanımlama
- Self-hosted runner'lar ile GitHub-hosted runner'lar arasında seçim yapma
- Büyük runner'lar (large runners) için özel konfigürasyonlar uygulama
2. Kuruluş Düzeyinde Ayarların Kilitlenmesi
Bu yeni özellikler sayesinde, yöneticiler aşağıdaki adımları izleyerek kuruluş genelinde tutarlılığı sağlayabilir:
- GitHub Organizasyon Ayarlarına Erişim:
GitHub.com → Organizations → [Organizasyon Adı] → Settings → Actions → Runners - Runner Tipi Seçimi:
- GitHub-hosted runner'lar: GitHub tarafından yönetilen, otomatik ölçeklendirme sağlayan runner'lar
- Self-hosted runner'lar: Kuruluşun kendi sunucularında çalışan, özel konfigürasyonlara sahip runner'lar
- Large runners: Yüksek performans gerektiren görevler için optimize edilmiş runner'lar
- Ayarların Kilitlenmesi:
Kuruluş yöneticileri, aşağıdaki komutla runner ayarlarını kilitleyerek bireysel repository'lerin kendi ayarlarını geçersiz kılmasını engelleyebilir:
# GitHub CLI kullanarak $ gh api -X PUT /orgs/{org}/actions/runners/lock --field runner_type=default
3. İçerik Hariç Tutma (Content Exclusion)
Kuruluş yöneticileri, hassas içeriklerin kod inceleme sürecinden otomatik olarak hariç tutulmasını sağlayabilir. Bu özellik sayesinde aşağıdaki durumlar yönetilebilir:
- API anahtarları, şifreler gibi gizli bilgilerin log'larda görünmesini engelleme
- Belirli dosya tiplerinin (örn. .env, .config) incelemeye dahil edilmemesi
- Özel regex kalıplarıyla hassas verilerin tespiti ve maskelenmesi
Uygulama Adımları
Adım 1: Runner Tiplerini Tanımlama
GitHub Organizasyon Ayarlarına gidin:
https://github.com/organizations/[ORGANIZATION_NAME]/settings/actions/runnersVarsayılan runner tipini seçin (GitHub-hosted, self-hosted veya large):
# GitHub REST API kullanarak curl -X PUT \ -H "Authorization: token YOUR_GITHUB_TOKEN" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/orgs/{org}/actions/runners/default \ -d '{"runner_type":"large"}'
Adım 2: Runner Ayarlarını Kilitleme
Kuruluşunuzdaki tüm repository'ler için geçerli olacak ayarları kilitleyin:
# GitHub CLI kullanarak $ gh api -X PUT /orgs/{org}/actions/runners/lock --field runner_type=default --field enforce=trueBu ayarın başarılı bir şekilde uygulandığını doğrulamak için:
# Runner ayarlarını kontrol et $ gh api /orgs/{org}/actions/runners | jq '.runner_type'
Adım 3: İçerik Hariç Tutma Kurallarını Yapılandırma
GitHub Organizasyon Ayarlarında "Content Exclusion" bölümüne gidin:
https://github.com/organizations/[ORGANIZATION_NAME]/settings/actions/content-exclusionAşağıdaki örnek kalıpları ekleyin:
# Hassas dosya tipleri *.env *.config *.key # API anahtarları ve şifreler için regex /api[_-]?key=.* /password=.*Değişiklikleri kaydedin ve uygulayın.
Önemli İpuçları ve Uyarılar
Uyarı: Runner ayarlarını kilitledikten sonra, bireysel repository'ler kendi runner ayarlarını değiştirmeye çalıştığında hata alacaktır. Bu durumda, kuruluş yöneticisi tarafından ayarların yeniden yapılandırılması gerekmektedir.
İpucu: Self-hosted runner'lar kullanırken, runner'ların bulunduğu sunucuların güvenliği için ek önlemler alın. Örneğin, runner'ların sadece kuruluşun özel ağında çalışmasını sağlayın ve düzenli olarak güncellemeleri kontrol edin.
Performans Notu: Large runner'lar yüksek performans gerektiren görevler için optimize edilmiştir. Ancak, bu runner'ların kullanımı maliyetleri artırabilir. Maliyetleri kontrol altında tutmak için runner'ların kullanımını izleyin ve gereksiz kullanımları engelleyin.
Sık Karşılaşılan Sorunlar ve Çözümleri
Runner Ayarlarının Geçersiz Kılınması
Sorun: Bireysel repository'ler, kuruluş düzeyinde kilitlenen runner ayarlarını geçersiz kılmaya çalışıyor.
Çözüm:
- Kuruluş yöneticisi olarak runner ayarlarının kilitlendiğinden emin olun.
- Eğer kilitlenme işlemi başarısız olduysa, aşağıdaki komutu kullanarak tekrar deneyin:
# Runner kilidini kaldır ve yeniden kilitle
$ gh api -X DELETE /orgs/{org}/actions/runners/lock
$ gh api -X PUT /orgs/{org}/actions/runners/lock --field runner_type=default --field enforce=true
Self-Hosted Runner'ların Çalışmaması
Sorun: Self-hosted runner'lar beklendiği gibi çalışmıyor.
Çözüm:
- Runner'ın bulunduğu sunucunun internete bağlı olduğundan emin olun.
- Runner'ın doğru şekilde yapılandırıldığını doğrulayın:
- Runner'ın sistem hizmeti olarak çalışıp çalışmadığını kontrol edin:
# Runner'ı yeniden kaydet
$ ./config.sh remove --token YOUR_RUNNER_TOKEN
$ ./config.sh --url https://github.com/{org} --token YOUR_RUNNER_TOKEN
# Linux (systemd)
sudo systemctl status actions.runner.{org}-{runner-name}.service
Sonuç
GitHub Copilot kod inceleme için sunulan yeni runner kontrol özellikleri ve içerik hariç tutma mekanizmaları, kuruluşların kod inceleme süreçlerini daha güvenli, tutarlı ve yönetilebilir hale getirmelerine olanak tanır. Bu özellikler sayesinde, yöneticiler kuruluş genelinde standartları belirleyebilir, performansı optimize edebilir ve hassas verilerin güvenliğini sağlayabilir. Bu özelliklerin doğru bir şekilde uygulanması, hem geliştirme sürecini hızlandırır hem de güvenlik açıklarını minimize eder.



