CrestVPS

self hosted github runner

CI ve derleme runner'ları

Sekmeyi değiştirmeden biten derlemeler.

Biz ne dağıtırdık

€44,03/ay

€62,9030% yıllık

Barındırılan CI dakikaları ölçülür, sıraya girer ve yavaştır; ekip üretken olduğu anda maliyet eğrisi çirkinleşir. Hızlı NVMe'li bir çift adanmış çekirdek örneği, çoğu barındırılan katmanı geride bırakır ve ne sıklıkta push ettiğinizden bağımsız olarak her ay sabit bir maliyete sahiptir. İç içe sanallaştırma dahildir, böylece Docker-in-Docker ve KVM tabanlı test paketleri geçici çözüm olmadan çalışır.

Neden bu yapılandırma

TORQUE size çekirdek sayısını verir, Gen5 NVMe size yapıt çıktısını verir ve iç içe sanallaştırma hiçbir şeye mal olmaz. Runner'ları forge'unuza kaydedin ve barındırılan planı silin.

Biz ne dağıtırdık

PlanTORQUE T2
vCPU8 (dedicated)
RAM32 GB
Depolama400 GB
İmajUbuntu Server 24.04 LTS

Boyutlandırma

Eşzamanlı iş başına iki adanmış çekirdek ve 4 GB tabandır; derlenmiş diller 4 çekirdek ve 8 GB ister. Bu nedenle 32 çekirdekli bir TORQUE düğümü 8 ağır iş veya yaklaşık 14 hafif iş çalıştırır, 32 değil. Geçici disk her ikisinden de daha önemlidir - görüntü katmanları, bağımlılık ağaçları ve derleme çıktısı için eşzamanlı iş başına NVMe'de 30-50 GB ayırın. İşler iç içe sanallaştırma gerektiriyorsa düğüm başına bir çekirdek ekleyin. Kuyruk bekleme süresi, iş süresi değil, ne zaman düğüm ekleyeceğinizi söyler.

İç içe sanallaştırma ve ne zaman gerekir

Çoğu CI bir container'da sorunsuz çalışır. Üç durum, konuk içinde gerçek bir hipervizör gerektirir: VM görüntülerini ve cloud-init'i test etme, KVM hızlandırmalı Android veya gömülü öykünücüleri çalıştırma ve güvenilmeyen bir pull request'in runner'a ulaşmaması gereken kodu çalıştırdığı herhangi bir iş. TORQUE SVM'i konuğa sunar, böylece KVM VPS'inizde çalışır ve öykünücü yazılım öykünmesi yerine doğal hızda çalışır; bu, Android test paketlerinde yaklaşık bir büyüklük sırası farktır. Maliyet, dış hipervizör için bir çekirdek ve iç konukta biraz daha yavaş disktir. Her ikisi için de bütçe ayırın.

Yapıt yolu genellikle darboğazdır

Yavaş bir pipeline'ı profillerseniz, derleme adımı nadiren en büyük çubuktur. Temel görüntüleri çekme, önbellekleri geri yükleme, yapıtları yükleme ve sonucu itme, tipik derlemelerdeki duvar saati süresinin çoğunu oluşturur. Sırayla üç düzeltme: katmanların genel internet yerine yerel ağ üzerinden gelmesi için aynı özel VLAN'da bir kayıt defteri çekme önbelleği tutun; katman açmanın arama sınırlı olmaması için geçici alanı NVMe'ye koyun; ve önbellek anahtarını hassaslaştırın, böylece tek parça bir arşiv yerine ihtiyacınız olanı geri yüklersiniz. Yoğun Bergamo çekirdekleri ucuzdur. Ağda beklemek değildir.

Ne gibi sorunlar çıkar

  • Docker-in-Docker için overlayfs üzerine overlayfs yığmak. İç içe overlay sürücüleri yavaştır ve bazen katmanları bozar. İşin içinde özel bir blok aygıtı kullanın veya builder'ı iç içe KVM üzerinde çalıştırın.
  • Asla temizlememek. Başıboş görüntüler, derleme önbellekleri ve eski birimler geçici NVMe'yi haftalar içinde doldurur ve ilk belirti yıllardır çalışan bir adımda derlemenin başarısız olmasıdır. Hata üzerine değil, zamanlayıcıyla temizleyin.
  • Önbellek aktarımının derleme süresini aşmasına izin vermek. İş başına çekilen ve gönderilen 3 GB bağımlılık önbelleği, sıfırdan derlemekten daha pahalıya mal olabilir. İkisini de ölçün ve önbelleği runner'larla aynı özel VLAN'da tutun.

Makineyi ayarlayın

  • Diğer her şeyNested virtualisation (VMX/SVM) · Dahil
  • CPU zamanlamasıPinned physical cores · €9
  • Depolama ve şifrelemeZFS with hourly snapshots · €7