self hosted github runner
CI та build-ранери
Збірки завершуються раніше, ніж ви встигнете перемкнути вкладку.
Що б ми розгорнули
44,03 EUR/міс
62,90 EUR−30% щорічно
Хостингові CI-хвилини обмежені, стоять у черзі та повільні, а ціна стає неприємною, щойно команда починає працювати продуктивно. Пара інстансів з виділеними ядрами та швидким NVMe обійде більшість хостингових тарифів і коштуватиме фіксовану суму щомісяця, незалежно від частоти пушів. Віртуалізація другого рівня включена, тому Docker-in-Docker та KVM-тести працюють без обхідних шляхів.
Чому ця конфігурація
TORQUE дає кількість ядер, Gen5 NVMe дає пропускну здатність для артефактів, а віртуалізація другого рівня нічого не коштує. Підключіть ранери до своєї фордже-системи та видаліть хостинговий план.
Що б ми розгорнули
Розміри
Два виділених ядра та 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) · Включено
- Планування CPU — Pinned physical cores · 9 EUR
- Сховище та шифрування — ZFS with hourly snapshots · 7 EUR
Більше
Створено для конкретних завдань
Хостинг ігрових серверів
Тик-рейт — це задача одного потоку. Все інше — шум.
Торговий та低латентний VPS
Відстань до торгового рушія — і нічого між вами та дротом.
Приватні VPN та проксі-ендпоінти
Власний вихід у юрисдикції, яку ви обрали свідомо.
Сідбокси та масове зберігання
Терабайти, які залишаються дешевими, та порт, який залишається відкритим.
Робочі вузли Kubernetes
Дешево за ядро, щільно та однаково щоразу.
AI інференс та доналаштування
Цілий GPU, переданий повністю, на умовах, які роблять математику вигідною.