Codeberg'de Kendi Forgejo Runner'ını Kurmak: Self-Hosted CI/CD Rehberi
Codeberg'de Kendi CI/CD Runner'ınızı Çalıştırmak Neden İyi Bir Fikir?
Codeberg'i GitHub alternatifi olarak keşfettiyseniz, muhtemelen bunun ne kadar güzel bir platform olduğunu fark etmişsinizdir. Forgejo altyapısı üzerine kurulu ve bir dernekçe yönetilen Codeberg, geliştiricilere gizliliğe saygılı ve topluluk tarafından şekillendirilen bir sürüm kontrol sistemi sunuyor. Ancak her kar amacı gütmeyen kuruluş gibi Codeberg'in paylaşılan runner kaynakları da sınırlı.
Çözüm ise oldukça basit: kendi Forgejo runner'ınızı barındırın. En güzel yanı şu ki, runner'lar Codeberg'e giden bağlantılar başlatır, yani bir VPS'te, evdeki sunucunuzda hatta dizüstü bilgisayarınızda sorunsuz çalışırlar. Hiçbir port yönlendirmesi gerekmiyor.
Mimari Yapıyı Anlamak
Teknik detaylara girmeden önce, aslında ne inşa ettiğimizi öğrenelim. Forgejo runner esasen Codeberg'den işleri dinleyen ve çalıştıran bir çalışan programıdır. Güvenlik açısından runner'ı Ana Sistemde Docker Çalıştırma (DinD) kullanarak ana sisteminizden izole edeceğiz. Bu, runner'ın konteynerzedileştirilmiş ortamlar yaratırken ev sahibi sistemin Docker daemon'una dokunmaması anlamına gelir—ve bu kritik bir güvenlik özelliğidir.
Docker Compose ile Kurulum
Kurulumun omurgası iki basit konteynerden oluşur:
version: '3.8'
services:
docker-in-docker:
image: docker:dind
container_name: 'docker_dind'
privileged: 'true'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
restart: 'unless-stopped'
runner:
image: 'data.forgejo.org/forgejo/runner:12'
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'runner'
environment:
DOCKER_HOST: tcp://docker-in-docker:2375
user: 1001:1001
volumes:
- ./data:/data
restart: 'unless-stopped'
command: 'forgejo-runner daemon --config runner-config.yml'
Bu yapılandırma iki konteyner oluşturur: biri izole bir Docker ortamı sağlar, diğeri ise onunla iletişim kuran sizin Forgejo runner'ınız.
Sistemi Hazırlamak
Konteynerleri başlatmadan önce, runner yapılandırmasını saklayacak dizin yapısını hazırlamanız gerekir. Dosyalarınızı tutmak istediğiniz yere gidin (örneğin /opt/forgejo-runner) ve şu komutu çalıştırın:
cd /opt/forgejo-runner
mkdir -p data/.cache
chown -R 1001:1001 data
chmod 775 data/.cache
chmod g+s data/.cache
Ardından varsayılan yapılandırma dosyasını oluşturun:
sudo sh -c 'docker run --rm data.forgejo.org/forgejo/runner:12 forgejo-runner generate-config > data/runner-config.yml'
Bu, iyi belgelendirilmiş ve özelleştirebileceğiniz bir yapılandırma dosyası yaratır.
Runner'ınızı Codeberg'e Kaydetmek
Şimdi entegrasyon aşaması geliyor. Codeberg hesabınızın (veya kuruluşunuzun) ayarlarına gidin ve Actions → Runners bölümüne gidin. "Yeni runner oluştur" düğmesine tıklayın, onu hatırlanır bir adla adlandırın ve isterseniz bir açıklama ekleyin.
Codeberg size bir UUID ve Token üretecek—bunları hemen yazıp saklayın. Bu kimlik bilgileri, runner'ınızın Codeberg'in altyapısı ile iletişim kurmasını sağlar. Sıfırlamadan ikinci kez göremezsiniz.
Akıllı kısım ise Codeberg'in sizin yapılandırmanız için gerekli YAML parçasını doğrudan göstermesidir.
Etiketleri ve Kapasiteyi Ayarlamak
runner-config.yml dosyasını açın ve iki önemli değişiklik yapın:
1. Sunucu Yapılandırmasını Güncelleyin: Codeberg'den aldığınız kimlik bilgilerini sunucu bölümüne ekleyin.
2. Etiketleri Tanımlayın:
Etiketler, iş akışlarının runner'ınızı bulmasını sağlar. Üç bölümlü bir sözdizimi kullanırlar: [İş Akışı Etiketi]:[Yürütme Yöntemi]://[Ortam]
Örneğin:
labels:
- 'ubuntu-latest:docker://node:20-bookworm'
- 'ubuntu-22.04:docker://node:20-bookworm'
- 'ubuntu-24.04:docker://node:22-bookworm'
Bir iş akışı runs-on: ubuntu-latest belirttiğinde, Codeberg bunu bu etikete sahip bir runner ile eşleştirir. Bu, işler ve runner'lar arasındaki eşleştirme sistemidir.
İsteğe Bağlı: Kapasiteyi Artırın
Varsayılan olarak runner'lar bir seferde bir işi yönetir. Kaynaklarınız varsa, capacity ayarını artırarak aynı anda birden fazla işi çalıştırabilirsiniz—çoğu kurulum için 4'le başlamanızı tavsiye ederiz.
Canlı Ortama Geçmek
Yapılandırmanız tamamlandıktan sonra runner'ı başlatın:
docker-compose up -d
Başarıyla bağlanıp bağlanmadığını kontrol etmek için günlükleri izleyin:
docker-compose logs -f runner
Runner'ınızın Codeberg'e kaydolduğunun onayını görmelisiniz. Bundan sonra, depolarınızdaki runner'ınızın etiketlerini belirten her iş akışı kendi altyapınıza yönlendirilecektir.
Fark Edeceğiniz Performans Kazançları
Kendi runner'ınızı barındırarak şunları yaşayacaksınız:
- Daha hızlı işlem çalışması kuyruk gecikmeleri olmadan
- Tam denetim CI/CD ortamınız ve bağımlılıklarınız üzerinde
- Maliyet tasarrufu ve Codeberg'in kar amacı gütmeyen misyonunu destekleme
- Gizlilik iş akışı günlüklerinizi kendi altyapınızda tutarak
- Esneklik ihtiyaçlarınızla büyüme imkânı
Sonuç
Kendi Forgejo runner'ını ayarlamak, hemen sonuç vermeye başlayan altyapı kararlarından biridir. Cuma öğleden sonrasında tamamlanacak kadar basit, oysa geliştirme ekibinizle ölçeklenecek kadar güçlüdür. Üstelik Codeberg'in paylaşılan runner'larına binilen yükü azaltarak açık kaynak ekosistemini doğrudan desteklersiniz.
Zaten Codeberg kullananlar için bu, doğal bir ileri adımdır. GitHub'dan yeni geçen ve alternatif arayan biriyseniz, güvenilir CI/CD seçeneğine sahip olmak sıklıkla belirleyici faktördür—ve artık bunu tamamen kendi kontrolünüzde tutabileceğinizi biliyorsunuz.