CrestVPS

self hosted github runner

CI та build-ранери

Збірки завершуються раніше, ніж ви встигнете перемкнути вкладку.

Що б ми розгорнули

44,03 EUR/міс

62,90 EUR30% щорічно

Хостингові CI-хвилини обмежені, стоять у черзі та повільні, а ціна стає неприємною, щойно команда починає працювати продуктивно. Пара інстансів з виділеними ядрами та швидким NVMe обійде більшість хостингових тарифів і коштуватиме фіксовану суму щомісяця, незалежно від частоти пушів. Віртуалізація другого рівня включена, тому Docker-in-Docker та KVM-тести працюють без обхідних шляхів.

Чому ця конфігурація

TORQUE дає кількість ядер, Gen5 NVMe дає пропускну здатність для артефактів, а віртуалізація другого рівня нічого не коштує. Підключіть ранери до своєї фордже-системи та видаліть хостинговий план.

Що б ми розгорнули

PlanTORQUE T2
vCPU8 (dedicated)
RAM32 GB
Сховище400 GB
ОбразUbuntu Server 24.04 LTS

Розміри

Два виділених ядра та 4 ГБ на кожне конкурентне завдання — це мінімум; для компільованих мов потрібно 4 ядра та 8 ГБ. Вузол TORQUE з 32 ядрами виконує 8 важких завдань або близько 14 легких, а не 32. Тимчасовий диск важливіший за все інше — плануйте 30-50 ГБ на NVMe для кожного конкурентного завдання під шари образів, дерева залежностей та вихідні артефакти. Додайте ядро на вузол, якщо завдання потребують віртуалізації другого рівня. Час очікування в черзі, а не тривалість завдання, підкаже, коли додавати вузол.

Вкладена віртуалізація та коли вона потрібна

Більшість CI-запусків працює в контейнері. Три випадки потребують справжнього гіпервізора всередині гостя: тестування VM-образів та cloud-init, запуск Android- або embedded-емуляторів з KVM-прискоренням, а також будь-яке завдання, де неперевірений pull request виконує код, який не повинен дістатися до ранера. TORQUE надає SVM гостьовій системі, тому KVM працює всередині вашого VPS, а емулятор працює на нативній швидкості, а не через програмну емуляцію, що дає приблизно на порядок швидше на Android-тестах. Ціна — одне ядро накладних витрат для зовнішнього гіпервізора та трохи повільніший диск у внутрішньому гості. Враховуйте це в бюджеті.

Шлях артефактів зазвичай є вузьким місцем

Профілюйте повільний пайплайн — крок компіляції рідко є найдовшим. Витягування базових образів, відновлення кешів, завантаження артефактів та пуш результату займають більшу частину часу в типових збірках. Три виправлення в порядку ефективності: тримайте pull-through кеш реєстру в тій же приватній VLAN, щоб шари надходили локальною мережею, а не через публічний інтернет; розмістіть тимчасові файли на NVMe, щоб розпакування шарів не залежало від пошуку; зробіть ключ кешу точним, щоб відновлювати лише потрібне, а не монолітний архів. Щільні ядра Bergamo дешеві. Очікування мережі — ні.

Що може піти не так

  • Складання overlayfs на overlayfs для Docker-in-Docker. Вкладені overlay-драйвери повільні та іноді пошкоджують шари. Використовуйте виділений блоковий пристрій у завданні або запускайте збірку через вкладений KVM.
  • Відсутність регулярного очищення. Висячі образи, кеші збірок та застарілі томи заповнюють тимчасовий NVMe за тижні, і перший симптом — збій збірки на кроці, який працював рік. Очищуйте за таймером, а не за фактом збою.
  • Кеш-трансфер, що перевищує час збірки. Кеш залежностей на 3 ГБ, який витягується та завантажується для кожного завдання, може коштувати дорожче, ніж компіляція з нуля. Заміряйте обидва показники та тримайте кеш у тій же приватній VLAN, що й ранери.

Налаштуйте машину

  • ІншеNested virtualisation (VMX/SVM) · Включено
  • Планування CPUPinned physical cores · 9 EUR
  • Сховище та шифруванняZFS with hourly snapshots · 7 EUR