GitHub Actions или GitLab CI: macOS може да обърне сметката

|Автор: Редакционният екип на QUASA|6 мин. четене| 1
GitHub Actions или GitLab CI: macOS може да обърне сметката

За екип с вече платен GitLab Premium хостваните Linux и Windows задачи може да не изискват допълнителен бюджет, докато продължителната macOS работа бързо изчерпва включената квота. Тарифата на GitLab включва 10 000 compute minutes месечно в Premium и 400 във Free; допълнителните минути се купуват за $10 на пакет от 1000. Абонаментът Premium започва от $29 на потребител месечно при годишно плащане, така че липсата на допълнителни пакети не означава нулева обща цена.

При GitHub Actions пряката цена на хостваното изпълнение зависи от операционната система, а при GitLab CI решаващ е и множителят, с който времето се приспада от квотата. Правилата за таксуване на GitHub Actions дават $0,006 на минута за стандартен двуядрен Linux runner, $0,010 за Windows и $0,062 за macOS; частните хранилища имат включени минути според плана. В правилата за compute minutes на GitLab стандартният Linux runner и Windows medium са с фактор 1, macOS M1 е с фактор 6, а macOS M2 Pro — с фактор 12. Windows и двата macOS runner-а в GitLab.com са обозначени като бета.

Какво точно сравняват сметките

Условният профил е частно хранилище с 5000 минути изпълнение на задачи месечно, изцяло върху една операционна система. Това е сборът от времето на всички задачи, включително тези, които вървят паралелно, а не времето от старта до края на един pipeline. Приемаме, че посочените минути вече са отчетени за таксуване, за да отделим ефекта на тарифата от закръглянето на кратки задачи.

За GitHub изчисляваме брутната цена преди включените минути. За GitLab първо умножаваме реалното време по фактора на конкретния runner, после изваждаме месечната квота и закръгляме нужните допълнителни минути до цели пакети. Купените минути се използват след месечната квота и неизползваният остатък може да премине към следващ месец. Това прави цената на пакета различна от действително изразходваната сума за един отделен месец.

Три профила при еднакви 5000 минути

  • Linux: При стандартния двуядрен GitHub runner брутната цена е 5000 × $0,006 = $30. Стандартният Linux runner на GitLab изразходва 5000 compute minutes. След квотата на Free остават 4600 минути и са нужни пет пакета за $50. При вече платен Premium натоварването се побира във включената квота. Тези машини имат различни характеристики, затова една и съща задача може да завърши за различно време.
  • Windows: Брутната сметка за стандартния GitHub runner е 5000 × $0,010 = $50. Windows medium в GitLab изразходва 5000 compute minutes: пет пакета за $50 след квотата на Free или без допълнителни пакети при Premium. Равенството между двете брутни суми в този пример не установява равна производителност или еднаква крайна фактура. GitLab.com обозначава своя Windows runner като бета.
  • macOS: Стандартният GitHub runner дава брутна цена 5000 × $0,062 = $310. GitLab macOS M2 Pro превръща същата продължителност в 60 000 compute minutes: 60 пакета за $600 след квотата на Free или 50 пакета за $500 при вече платен Premium. При GitLab macOS M1 потреблението е 30 000 compute minutes — 30 пакета за $300 при Free или 20 пакета за $200 при Premium. Това са различни машини; ако задачата работи по-бавно на M1, реалните минути и сумата също ще се променят.

Именно изборът между M1 и M2 Pro променя посоката на сравнението. При еднакво прието време Premium с M1 изисква по-малко допълнителни разходи от брутната цена на GitHub, а M2 Pro — повече. При Free разликата между $300 за пакетите на M1 и брутните $310 за GitHub е малка и наличните включени минути в GitHub могат да я заличат. За екип, който тепърва купува Premium, към цената на допълнителните минути трябва да се добави и абонаментът.

Защо еднаквите минути не са еднаква работа

Сравнението фиксира време, а не скорост на build-а. GitHub посочва стандартен macOS runner с M1 или Intel, докато GitLab предлага M1 medium и M2 Pro large. Ако компилацията използва повече ядра или памет на едната машина, тя може да приключи по-бързо и да промени броя платени минути. Същата уговорка важи и за Linux: цената на минута е полезна само след като се установи колко минути действително отнема съответната конфигурация.

В GitLab факторът е множител на отчетеното време, а не цена в долари. При смесен pipeline отделните задачи трябва да се групират по runner: Linux тестовете, Windows пакетите и macOS компилацията изразходват квотата по различен начин. Ако една macOS задача е кратка, високият фактор може да има малък месечен ефект; ако заема голяма част от общото време, именно тя определя нужните пакети.

Артефактите са отделна част от бюджета

Изчисленията за изпълнение не включват съхранението на build резултати. При GitHub Free включеното място за артефакти е 500 MB, а при Team — 2 GB; то се споделя с GitHub Packages. Използването над включения обем се натрупва по часове. Изтриването на артефакт освобождава текущо място, но не премахва вече натрупаното потребление за периода. Затова продължителното пазене на големи бинарни пакети може да добави разход към евтин на пръв поглед Linux pipeline.

При GitLab.com проектният лимит за съхранение обхваща Git хранилището и LFS: във Free той е 10 GiB на проект, а в Premium — 500 GiB. Build артефактите, контейнерният регистър и пакетният регистър са извън този конкретен лимит. Следователно числото за място на хранилището не може да се използва като обща квота за всички CI резултати; размерът и срокът за пазене на артефактите са отделен въпрос при избора.

Кога собствен runner променя избора

Собствен runner е разумен кандидат при постоянна натовареност и наличен капацитет за администриране. GitHub не начислява Actions минути за self-hosted runner. В GitLab.com compute квотата се отнася до instance runners; runner на ниво проект или група върху собствена инфраструктура не я изразходва. При продължителни macOS задачи това премахва именно множителя на хоствания GitLab runner от месечната сметка, но го заменя с разход за машина, електричество или наем, поддръжка и капацитет при паралелни задачи.

Времето за изпълнение само по себе си не описва колко бързо екипът получава резултат. В изследването CIPerf почасови тестове сравняват Bitbucket Pipelines със собствен сървър в Hetzner и отделят изчакването за ресурс, подготовката на средата и същинския тест. Това са резултати за конкретната изследвана конфигурация, а не измерване на GitHub Actions срещу GitLab CI. За решение между двете услуги освен фактурата имат значение опашката за задачи, времето за настройка, нужната изолация на недоверен код и трудът по обновяване на runner-а.

Ако екипът вече плаща за GitLab Premium и изпълнява предимно Linux или Windows задачи, включената квота може да покрие разгледания товар. При macOS решаващият въпрос е кой runner изпълнява задачата и за колко време: M1 и M2 Pro дават различни допълнителни суми дори при един и същ месечен брой минути. За редовно натоварен Mac собствен runner може да е по-изгоден, когато спестените пакети или платени минути покриват реалната цена на машината и поддръжката ѝ.

Прочетете също:

Споделяне:

Абонирайте се за нашия бюлетин

Получавайте най-новите новини за Web3, AI и криптовалути директно във входящата си поща.

0