Защо GitHub Actions е бавен и как да го ускорите
По-голямата част от бавната задача в GitHub Actions минава преди първия тест. Настройване на Node, изтегляне на зависимостите, изграждане на Docker образа: едни и същи минути при всеки push, докато някой от екипа ви чака зелена отметка. При таксуване на минута плащате и за тези минути.
Skipbox е рънър за GitHub Actions, който пази машината си между задачите, така че инсталираното от една задача още е на диска за следващата. Сменете един ред, runs-on: skipbox, и задачата се изпълнява на собствената ви машина за фиксирани $39 на месец с неограничени минути.
Всяка задача започва от празна VM
Рънърът, хостван от GitHub, е нова виртуална машина за всяка задача. На нея няма нищо от изтегленото или изграденото от предишната задача, така че всяка задача изгражда наново същото състояние:
| Стъпка | Рънър, хостван от GitHub | Skipbox |
|---|---|---|
| Настройване на Node, Python, Java | Изтегля инструментите | Намира ги в кеша на инструменти от предишната задача |
| Инсталиране на зависимостите | Изтегля и разархивира архива на кеша; при пропуск – цялото изтегляне от регистъра | Чете кеша на пакетния мениджър от диска |
| Изграждане на Docker образа | Започва без слоеве и изгражда наново всяка стъпка | Използва отново слоевете от предишната компилация |
| Изпълнение на тестовете | 2 CPU на ubuntu-latest в частно хранилище | 4 vCPU и нагоре |
Първите три реда не създават нищо ново. Те връщат машината там, където е била вчера.
Кешът на GitHub смекчава това, без да го променя. Той побира 10 GB на хранилище, изтрива записи, които никоя задача не е чела 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 използване. Въведете собствените си минути в калкулатора на началната страница – не изисква влизане.
А броят на изпълненията само расте:
- Агенти за програмиране с ИИ. Всеки push на агент пуска CI. Чакането и сметката растат с push-овете, не с броя на хората.
- Повече тестове. Пакет E2E тестове или матрица повтаря настройването във всяка задача, която добавя.
- Бюджети. Ограничете сметката с бюджет в GitHub и задачите спират да се стартират в средата на месеца, което спира сливанията.
Сами да го ускорите е цял проект
Да останете на рънъри, хоствани от GitHub, и да ги направите бързи означава да поемете работа като тази:
- Ключове за кеша по хеша на lockfile-овете и настройване на
restore-keys, докато започнат да попадат - Добавяне на buildx и експортиране на кеша на Docker с
cache-to, в същите 10 GB - Разделяне на тестовете на части, при което всяка част повтаря настройването, а таксуваните минути растат
- Или собствен самостоятелно хостван рънър: подготовка на машини, обновявания на ОС, почистване между задачите и поправяне, когато падне
Всяко от тях заобикаля машина, която забравя всичко. Skipbox пази машината, така че нищо от това не е нужно.
Какво се променя със Skipbox
Настройката остава на диска. Задачите ви се изпълняват на собствената машина на профила ви и тя остава между задачите. Docker образи, слоеве и кеш на компилацията; кешове на пакети за npm, pip, Gradle и други; инструментите, които инсталират setup-node и подобните. Поне 7× мястото за кеш на GitHub, без изтичане след 7 дни и без правило за клоновете.
По-големи машини на фиксирана цена. Компилаторите и инструментите за тестове пускат по един работен процес на ядро, така че повече ядра скъсяват стъпките, натоварващи процесора.
| План | Машина | Цена |
|---|---|---|
| S | 4 vCPU · 16 GB | $39 на месец |
| M | 8 vCPU · 16 GB | $79 на месец |
| L | 16 vCPU · 32 GB | $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.
- Инсталирайте приложението Skipbox в GitHub и изберете хранилищата.
- Сменете
runs-onи направете push.
Инсталираното от първата задача е на диска за втората.
Сигурност
- Машината е само на вашия профил. Задачи на друга компания никога не се изпълняват на нея.
- След всяка задача идентификационните данни, процесите и контейнерите на рънъра се изтриват. От 13 ноември 2026 г. checkout-ът и резултатът от компилацията му (
target/на Cargo) остават на собствената ви машина за следващите ви задачи; „Чиста VM за всяка задача“ дава на всяка задача нова машина. - Код от хора без права за запис (например pull request-и от форкове) се изпълнява на нова машина за еднократна употреба.
Подробностите са в как са изолирани задачите.
Изпробвайте го с най-бавната си задача
Пробният период е безплатен за 7 дни или 3000 минути на задачи, което настъпи първо, и не изисква карта. Преместете най-бавната си задача на runs-on: skipbox, пуснете я два пъти подред и сложете времената на стъпките до тези в GitHub.
Често задавани въпроси
Защо GitHub Actions е толкова бавен?
Всяка задача на рънър, хостван от GitHub, започва на нова VM без нищо от предишното изпълнение, така че изтегля инструментите си, преинсталира зависимостите си и изгражда наново Docker образите си, преди да започнат тестовете ви. Skipbox изпълнява задачите ви на собствената машина на профила ви и пази това състояние на диска ѝ, така че следващата задача започва оттам, докъдето е стигнала предишната.
Добавих actions/cache. Защо работният ми поток още е бавен?
Дори при попадение в кеша всяка задача изтегля и разархивира архив, защото VM е нова всеки път. А кешът на GitHub побира 10 GB на хранилище, изтрива записи, неизползвани 7 дни, и не може да се чете от съседен клон. В Skipbox кешовете на пакетите и Docker слоевете вече са на диска на машината, без ключове за управляване.
Как да ускоря компилирането на Docker образи в GitHub Actions?
Дайте на компилацията слоевете от предишната. На рънърите, хоствани от GitHub, това означава да експортирате кеша с buildx и да го импортирате при всяко изпълнение, в същия лимит от 10 GB. В Skipbox образите и кешът на компилацията на Docker остават на машината между задачите, така че docker build сам използва отново слоевете.
Трябва ли да пренапиша работните си потоци, за да използвам Skipbox?
Не. За задачите за Linux сменете runs-on на skipbox. Машината е с Ubuntu 24.04 с Docker, Node.js и Python, а стъпките и действията ви се изпълняват както са.
Мога ли да го изпробвам безплатно с моя бавна задача?
Да. Пробният период е 7 дни или 3000 минути на задачи, което настъпи първо, без карта. Преместете най-бавната си задача на runs-on: skipbox, пуснете я два пъти подред и сравнете времената на стъпките с тези в GitHub.
Обновено на 11 ноември 2026 г.