CI çalıştırıcı barındırma
Cevap
Kendi kendine barındırılan CI runner'ları, derleme işlem hatlarınızı sağlayıcının paylaşılan havuzu yerine kontrol ettiğiniz sunucularda çalıştırır. Aylık 14$'lık bir Incognito VPS VECTOR planı, barındırılan bir runner'ı genellikle geride bırakır ve dakika başına faturalandırmayı ve kuyruk beklemelerini tamamen ortadan kaldırır.
| Senaryo | Minimum |
|---|---|
| Küçük proje | 2 vCPU, 4 GB RAM |
| Tipik monorepo | 6 vCPU, 16 GB RAM |
| Ağır derleme (Rust, C++) | 16 vCPU, 64 GB RAM |
| Docker katman önbelleği | 140 GB+ NVMe |
Hesap genellikle belirleyicidir
Barındırılan CI dakikaları, sayana kadar ucuz görünür. Ayda birkaç yüz derleme yapan, 2 çekirdekli barındırılan runner'lar kullanan bir ekip, genellikle 6 çekirdekli özel bir VPS'in maliyetinden daha fazlasını harcar ve barındırılan runner'lar mütevazı makineler olduğu için paralarının karşılığında daha yavaş derlemeler alır.
Diğer tasarruf zamanla ilgilidir, parayla değil. Kendi kendine barındırılan bir runner'da kuyruk yoktur — işiniz push ettiğinizde başlar. Yoğun bir barındırılan havuzda, bir runner için birkaç dakika beklemek normaldir ve bu gecikme her geliştiriciye, her push'a yansır.
Gerçek hız artışı önbelleklemede yatar
Kalıcı yerel NVMe, CI ekonomisini ham çekirdek sayısından daha fazla değiştirir. Docker katmanları, Cargo kayıtları, node_modules, Gradle önbellekleri ve ccache, kendi kendine barındırılan bir runner'da çalıştırmalar arasında korunur; barındırılan bir runner ise temiz başlar ve her şeyi yeniden indirir.
Büyük bir Rust veya C++ projesi için bu genellikle duvar saati derleme süresinde beş ila on kat azalma sağlar ve tamamen ücretsizdir.
İzolasyon, çünkü runner'lar keyfi kod çalıştırır
Kendi kendine barındırılan bir runner, işlem hattında ne varsa onu çalıştırır; bu, herkese açık bir depo için, bir katkıda bulunan kişinin bir çekme isteğine koyduğu her şey anlamına gelir. Herkese açık bir depoya, geçici ve izole yürütme olmadan asla kendi kendine barındırılan bir runner eklemeyin.
Kapsayıcılarda veya kısa ömürlü VM'lerde geçici runner'lar kullanın, runner'a ihtiyaç duymadığı hiçbir kimlik bilgisi vermeyin ve üzerinde başka hiçbir şey olmayan bir sunucuya koyun. Proje başına 14$'lık bir makine, tehlikeli bir işlem hattının altyapınızın geri kalanına ulaşmasına karşı ucuz bir sigortadır.
Sık sorulan sorular
01 CI runner için hangi plan?
Tipik bir proje için VECTOR (4 vCPU, 8 GB); monorepo veya ağır derleme için BASTION (6 vCPU, 16 GB). Çoğu işlem hattı için kalıcı NVMe önbelleği çekirdek sayısından daha önemlidir.
02 GitHub Actions ile çalışır mı?
Evet. Makineyi kendi kendine barındırılan bir runner olarak kaydedin ve runs-on ile hedefleyin. GitLab, Forgejo, Woodpecker ve Drone da aynı şekilde çalışır.
03 Kendi kendine barındırılan runner herkese açık depolar için güvenli midir?
Geçici izolasyon olmadan değil. Bir çekme isteği runner üzerinde keyfi kod çalıştırabilir. Geçici kapsayıcılar veya tek kullanımlık VM'ler kullanın ve işlem hattının ihtiyaç duymadığı kimlik bilgilerini asla vermeyin.
04 Ne kadar hızlı?
Ham hesaplamada genellikle iki ila dört kat, önbellek yoğun işlem hatlarında ise beş ila on kat daha hızlıdır çünkü Docker katmanları ve bağımlılık önbellekleri yeniden indirilmek yerine çalıştırmalar arasında kalıcı olur.
İlgili