Ще работят ли работните ми потоци без промени?
Да, повечето. Skipbox изпълнява работните потоци на публични и частни хранилища в организации и лични профили в GitHub. VM е Ubuntu 24.04 на x64 с Docker, git, build-essential, Node 22 и Python 3.12, а задачата работи като потребител със sudo без парола, както на рънърите на GitHub. Образът ubuntu-latest на GitHub има повече предварително инсталирани неща, затова за други инструменти добавете actions/setup-java, actions/setup-go и подобни.
Защо е толкова евтино?
С ИИ, който пише все повече от кода, CI се изпълнява все повече всеки месец, а таксуването на минута расте с всяко изпълнение. Затова Skipbox нарочно избра друг модел: наемате VM само за вашия профил, на месец. GitHub не таксува минутите на самостоятелно хостваните рънъри, така че колкото и задачи да изпълнявате, цената остава фиксирана – $39 на месец за S. Fluxenic, компанията зад Skipbox, използва сървъри от евтини облачни доставчици и свои собствени и ги предлага като VM с удобен размер. Skipbox върши досадната част вместо вас: регистрира рънърите, почиства след всяка задача и проверява състоянието на машината. Освен това изгражда отново повредена машина и поддържа образа актуален. При пълно натоварване цената е 1/12 от тази на GitHub и 1/8 от тази на Blacksmith.
Защо е толкова бързо?
Защото машината е само на вашия профил и продължава да работи между задачите. Docker слоевете и кешовете на пакетите от последната ви задача са още на диска ѝ, така че компилация, която ги използва, не ги изтегля и не ги изгражда отново. Задача, хоствана от GitHub, всеки път започва на нова VM с празен диск. Дори S пази кешовете си на собствен диск от 80 GB. Това е над 7x кеша, който GitHub дава по подразбиране на едно хранилище, и нищо в него не изтича след 7 дни без използване. S има и 4 vCPU – повече от 2 ядра на ubuntu-latest в частно хранилище.
Няма ли да ми излезе по-евтино да наема собствен VPS като рънър?
Наемете VPS със същия размер от голям хостинг доставчик и пак няма да получите самостоятелно хостван рънър, който е по-евтин, по-бърз и изисква по-малко работа от Skipbox. Skipbox регистрира нов рънър за всяка задача и го премахва след нея. След всяка задача изтрива идентификационните данни на рънъра и запазва работното ви копие и резултата от компилацията за следващата. Проверява състоянието на машината, изгражда я отново, когато проверката не мине, и поддържа образа актуален. Код от хора без права за запис (например pull request-и от форкове) се изпълнява на временна VM. Получавате всичко това за $39 на месец с S, като промените един ред runs-on, без нищо за поддръжка.
Изпълнява ли Skipbox публични хранилища?
Да, както публични, така и частни хранилища. Код от хора без права за запис (например pull request-и от форкове) се изпълнява на нова VM, която чете кешовете ви, но не може да ги променя; собствената ви машина изпълнява само кода на екипа ви.
Наистина ли минутите са неограничени?
Да. Плановете струват $39, $79 или $149 на месец, таксуват се в щатски долари месечно или за година предварително на цената на 10 месеца и нямат такси за използване. Планът ограничава колко задачи работят едновременно и колко голяма е всяка, а не минутите: задача, която не се побира, чака, докато някоя от работещите приключи, а чакането не добавя нищо към сметката ви. Страницата на организацията ви в Skipbox показва колко задачи чакат и откога чака най-старата. Една задача може да работи до 6 часа.
Как по-големите задачи се броят към едновременните задачи?
Едновременните задачи се броят в задачи от 4 vCPU. Планът изпълнява едновременно задачи до общия си брой vCPU (S 4, M 8, L 16 vCPU), така че задача от 8 vCPU се брои като 2, а задача от 16 vCPU – като 4. Най-голямата единична задача, която планът може да изпълни, е колкото броя му vCPU: 4 при S, 8 при M, 16 при L. Добавете планове, за да изпълнявате повече задачи едновременно.
Как се сравнява Skipbox с рънърите на GitHub?
Всяка задача в Skipbox S получава 4 vCPU и 16 GB; ubuntu-latest на GitHub в частно хранилище е 2 ядра и 8 GB. Собствената ви машина пази и Docker слоевете и кешовете на пакетите от последната ви задача, така че компилация, която ги използва, не ги изтегля отново; задача, хоствана от GitHub, всеки път започва на нова VM. docker build и docker compose build използват повторно слоевете. Builder-ът по подразбиране на docker/setup-buildx-action започва празен във всяка задача, затова задайте му driver: docker, за да използва собствения кеш на машината. След като първата ви задача се изпълни в Skipbox, таблото показва времето ѝ до медианата ѝ в GitHub за последните 30 дни, ако GitHub я е изпълнявал през този период.
Компилацията ми остава без памет на рънъра на GitHub. Колко памет има Skipbox?
16 GB в план S, на собствената ви машина: 2× повече от 8 GB на ubuntu-latest в частно хранилище и колкото при larger runner на GitHub с 4 ядра. Планът S имаше 8 GB и това не стигаше за openai/codex (rust-v0.159.3): cargo clippy --workspace --tests завърши само като натика около 14 GB в компресиран swap. При днешните 16 GB същият билд праща в swap около 20 MB. За задача, на която ѝ трябва повече, план L има 32 GB.
До какво има достъп Skipbox?
Само до това, което му трябва, за да регистрира рънъри и да проверява задачи. В организация приложението Skipbox CI иска три разрешения: Self-hosted runners (запис), за да регистрира рънър в GitHub за всяка задача и да го премахне, когато задачата приключи; Actions (четене и запис), за да вижда кои задачи чакат, да проверява състоянието им, да чете колко дълго са работили задачите ви през последните 30 дни за офертата ви и да изпълни повторно задача, чиято машина в Skipbox е спряла по време на работа; и Metadata (четене). Приложението Skipbox CI никога не редактира и не прави push на работните ви потоци и не може да чете кода ви: всяка задача сама изтегля кода ви на VM, на която работи. В личен профил GitHub регистрира рънър за хранилище само с разрешението Administration, което обхваща и настройките на хранилището, сътрудниците и ключовете за внедряване. Skipbox (personal) го иска и го използва само за регистриране и премахване на рънъри. Една функция е изключението, и то само ако я инсталирате: бутонът „Отваряне на pull request“ в таблото използва отделно приложение, Skipbox Migrate, което инсталирате само в избраните от вас хранилища. Там то иска права за запис в Contents, Workflows и Pull requests, прави push на един клон (skipbox/run-ci-on-skipbox), който променя само редове runs-on, и отваря pull request от него. То никога не слива и не докосва клона ви по подразбиране. Когато влезете, Skipbox чете и имейл адреса ви – за известия за пробния период и плащанията. Както при всеки рънър, VM на задачата съдържа тайните на работния ви поток и токена на GitHub за тази задача, така че кодът, който задачата изпълнява, може да ги прочете.
Къде се изпълняват задачите?
На собствената машина на организацията ви: VM с размера на плана ви (и по време на пробния период), с още една за всеки допълнителен план. Никоя друга организация не я използва. Тя продължава да работи между задачите ви, така че Docker образите, кешовете, работното ви копие и резултатът от компилацията (target/ на Cargo, а при turbo 2 и кешът на Turborepo) остават за следващите ви задачи. Работи на сървъри, които Fluxenic, компанията зад Skipbox, наема от облачни доставчици или поддържа сама. Политиката за поверителност изброява всеки доставчик и държава. След всяка задача се изтриват идентификационните данни на рънъра, идентификационните данни за git в работното копие и често срещаните файлове с идентификационни данни. Задачите извън собствените ви машини, кодът от хора без права за запис (например pull request-и от форкове) и всяка задача при включено „Чиста VM за всяка задача“ се изпълняват на нова VM, която се изтрива заедно с диска си, когато задачата приключи. Задача, която още работи след 6 часа, се спира. Нищо не може да се свърже отвън от интернет. Изходящата поща (TCP порт 25) е блокирана. Останалата част от интернет е отворена, както при рънърите, хоствани от GitHub. Трафикът не се таксува.
Мога ли да започна машината си отначало или да изпълнявам всяка задача на нова VM?
Да. Натиснете „Нулиране на машината“ в „Планове и плащания“ по всяко време. Включете там „Чиста VM за всяка задача“ и всяка задача ще се изпълнява на нова VM.
Можем ли да прекратим или да получим възстановяване на сумата?
Можете да прекратите по всяко време; планът ви работи до края на платения месец или година. Ако задачите ви не са по-бързи в Skipbox, отколкото бяха в GitHub, получавате обратно всичко платено, и при месечните, и при годишните планове: поискайте го от страницата „Планове и плащания“ на профила си до 30 дни след първото плащане. Skipbox взема медианното време на всяка задача в Skipbox и в GitHub (за 30 дни преди инсталирането на Skipbox), претегля всяка задача според това колко често е работила в GitHub и сравнява двата сбора; една задача се брои, след като е изпълнена поне 3 пъти и на двете места, а ако няма задача за сравнение, няма какво да се възстанови. Ако първата задача, която изпълните след абонирането, не стартира до 10 минути, без времето, през което чака зад други ваши задачи, автоматично ви възстановяваме цялото плащане и прекратяваме плана. Иначе платен месец или година не се възстановява, освен в случаите, изброени в Условията.
Какво става, когато пробният период свърши? Ще ми бъде ли взета такса?
Не се таксува нищо: пробният период не изисква карта. Той започва с първата ви задача в Skipbox, а не при влизането или инсталирането на приложението, и изпълнява по една задача с 4 vCPU · 16 GB наведнъж в продължение на 7 дни или 3000 минути, което настъпи първо. Има 1 пробен период на профил и 1 на човек. Когато свърши, новите задачи чакат в GitHub, докато не изберете план.
Как да изпълня задача в Skipbox и как да се върна обратно?
Сменете runs-on на skipbox, за да преминете, и обратно на ubuntu-latest, за да се върнете. Влезте с GitHub, инсталирайте приложението Skipbox CI в организацията си или Skipbox (personal) в личния си профил, сменете реда runs-on на задачата на skipbox и направете commit; за по-голяма VM в плановете, които я включват, използвайте skipbox-8x16 или skipbox-16x32. За да се върнете, сменете runs-on: skipbox обратно на runs-on: ubuntu-latest. Нищо друго в хранилището ви не се е променило.