Чому GitHub Actions повільний і як не збирати все з нуля
Більша частина повільного завдання GitHub Actions минає ще до першого тесту. Налаштувати Node, завантажити залежності, зібрати образ Docker: ті самі хвилини на кожен push, поки хтось у команді чекає на зелену галочку. За похвилинної оплати ви ще й платите за ці хвилини.
Skipbox — це ранер GitHub Actions, який зберігає свою машину між завданнями, тож усе, що встановило одне завдання, лишається на диску для наступного. Змініть один рядок, runs-on: skipbox, і завдання запуститься на вашій власній машині за фіксовані $39 на місяць із хвилинами без обмежень.
Кожне завдання починається з чистої ВМ
Хостований ранер GitHub — це нова віртуальна машина для кожного завдання. На ній немає нічого, що завантажило чи зібрало попереднє завдання, тож кожне завдання відбудовує той самий стан:
| Крок | Хостований ранер GitHub | Skipbox |
|---|---|---|
| Налаштування Node, Python, Java | Завантажує набір інструментів | Знаходить його в кеші інструментів після попереднього завдання |
| Встановлення залежностей | Завантажує й розпаковує архів кешу; за промаху — повне завантаження з реєстру | Читає кеш менеджера пакетів із диска |
| Збирання образу Docker | Починає без шарів і перезбирає кожен крок | Перевикористовує шари попереднього збирання |
| Запуск тестів | 2 CPU на ubuntu-latest приватного репозиторію | Від 4 vCPU |
Перші три рядки не дають нічого нового. Вони лише повертають машину туди, де вона була вчора.
Кеш GitHub це пом’якшує, але не змінює. Він вміщує 10 ГБ на репозиторій, видаляє записи, які жодне завдання не читало 7 дн., а нова гілка функції не може прочитати кеш іншої гілки функції. Навіть за влучання кожен запуск завантажує й розпаковує архів.
Скільки коштує чекання
Припустімо, налаштування займає 3 хвилини кожного завдання, а ваша команда запускає 100 завдань на день. Це 300 хвилин часу ранера на день, витрачених на те, щоб повернути машину до попереднього стану, і кожен pull request чекає свою частку. Рев’ю починаються пізніше, злиття відбуваються пізніше, а інженери, поки чекають, перемикаються на інше.
За похвилинної оплати ці хвилини є в рахунку. Ранер на 4 vCPU за хвилинами на місяць:
| Хвилин на місяць (4 vCPU) | GitHub | Skipbox S | Економія щомісяця |
|---|---|---|---|
| 10 000 | $102 | $39 | $63 |
| 20 000 | $222 | $39 | $183 |
| 30 000 | $342 | $39 | $303 |
Суми GitHub — це рахунок після використання, що входить у GitHub Team. Введіть власні хвилини в калькулятор на головній сторінці; входити не потрібно.
А запусків стає тільки більше:
- AI-агенти для програмування. Кожен push агента запускає CI. Чекання й рахунок ростуть разом із push, а не з кількістю людей.
- Більше тестів. Набір E2E-тестів або матриця повторює налаштування в кожному доданому завданні.
- Бюджети. Обмежте рахунок бюджетом GitHub, і посеред місяця завдання перестануть запускатися, а з ними зупиняться й злиття.
Прискорити самому — це окремий проєкт
Лишатися на хостованих ранерах GitHub і зробити їх швидкими означає взяти на себе таку роботу:
- Будувати ключі кешу на хешах lock-файлів і налаштовувати
restore-keys, доки вони не почнуть влучати - Додати buildx й експортувати кеш Docker через
cache-to, у межах тих самих 10 ГБ - Розбивати тести на шарди, де кожен шард повторює налаштування, а оплачувані хвилини ростуть
- Або тримати власний self-hosted ранер: готувати машини, оновлювати ОС, прибирати між завданнями й лагодити, коли він падає
Кожен із цих способів обходить машину, яка все забуває. Skipbox зберігає машину, тож нічого з цього не потрібно.
Що змінюється на Skipbox
Налаштування лишається на диску. Ваші завдання працюють на власній машині вашого облікового запису, і вона лишається між завданнями. Образи Docker, шари й кеш збирання; кеші пакетів npm, pip, Gradle та інших; інструменти, які встановлюють setup-node і подібні дії. Місця для кешу щонайменше в 7× більше, ніж у GitHub, без видалення через 7 дн. і без правила гілок.
Більші машини за фіксованою ціною. Компілятори й тест-ранери запускають по одному воркеру на ядро, тож більше ядер скорочують кроки, що впираються в CPU.
| Тариф | Машина | Ціна |
|---|---|---|
| S | 4 vCPU · 16 ГБ | $39 на місяць |
| M | 8 vCPU · 16 ГБ | $79 на місяць |
| L | 16 vCPU · 32 ГБ | $149 на місяць |
Хвилини без обмежень на кожному тарифі. Завдання Skipbox не витрачають хвилин GitHub, тож бюджет GitHub ніколи їх не зупиняє.
Жодної машини, за якою треба доглядати. Skipbox готує машину, оновлює ОС та інструменти, прибирає після кожного завдання, запускає перевірку стану і перебудовує машину, яка її не пройшла.
Перехід — це один рядок
jobs:
build:
runs-on: skipbox # was ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
- Увійдіть у Skipbox через GitHub.
- Встановіть GitHub-застосунок Skipbox і виберіть репозиторії.
- Змініть
runs-onі зробіть push.
Те, що встановить перше завдання, лежатиме на диску для другого.
Безпека
- Машина належить лише вашому обліковому запису. Завдання жодної іншої компанії на ній не працюють.
- Після кожного завдання облікові дані ранера, процеси й контейнери стираються. З 13 листопада 2026 року ваш checkout і результати його збирання (
target/Cargo) лишаються на вашій власній машині для наступних завдань; «Чиста ВМ для кожного завдання» дає кожному завданню нову машину. - Код від людей без права запису (наприклад, pull requests з форків) запускається на новій одноразовій машині.
Подробиці — у розділі Як ізольовано завдання.
Спробуйте на найповільнішому завданні
Пробний період безкоштовний: 7 днів або 3 000 хв роботи завдань, залежно від того, що закінчиться раніше, і без картки. Перенесіть найповільніше завдання на runs-on: skipbox, запустіть його двічі поспіль і порівняйте час кроків із GitHub.
Запитання й відповіді
Чому GitHub Actions такий повільний?
Кожне завдання на хостованому ранері GitHub починається на новій ВМ, де немає нічого з попереднього запуску, тож воно завантажує інструменти, перевстановлює залежності й перезбирає образи Docker, перш ніж стартують ваші тести. Skipbox запускає ваші завдання на власній машині вашого облікового запису і зберігає цей стан на її диску, тож наступне завдання починає там, де зупинилося попереднє.
Я додав actions/cache. Чому workflow досі повільний?
Навіть за влучання в кеш кожне завдання завантажує й розпаковує архів, бо ВМ щоразу нова. А кеш GitHub вміщує 10 ГБ на репозиторій, видаляє записи, якими не користувалися 7 дн., і його не можна прочитати із сусідньої гілки. На Skipbox кеші пакетів і шари Docker уже лежать на диску машини, і ключами керувати не треба.
Як прискорити збирання Docker у GitHub Actions?
Дайте збиранню шари попереднього збирання. На хостованих ранерах GitHub це означає експортувати кеш через buildx й імпортувати його на кожному запуску, у межах тих самих 10 ГБ. На Skipbox образи й кеш збирання Docker лишаються на машині між завданнями, тож docker build сам перевикористовує шари.
Чи треба переписувати workflow, щоб користуватися Skipbox?
Ні. Для Linux-завдань змініть runs-on на skipbox. Машина працює на Ubuntu 24.04 з Docker, Node.js і Python, а ваші кроки й дії працюють як є.
Чи можна безкоштовно спробувати на власному повільному завданні?
Так. Пробний період триває 7 днів або 3 000 хв роботи завдань, залежно від того, що закінчиться раніше, без картки. Перенесіть найповільніше завдання на runs-on: skipbox, запустіть його двічі поспіль і порівняйте час кроків із GitHub.
Оновлено 11 листопада 2026 р.