Шокирующая новость: как новые $0.002 за минуту от GitHub могут съесть $3 500 вашего бюджета? 7 способов сэкономить
17 декабря 2025 г.Вступление
В начале 2024 года GitHub неожиданно объявил о введении платы за использование самохост‑рейнджеров в GitHub Actions – $0,002 за каждую минуту работы. На первый взгляд кажется, что небольшая сумма в два‑три цента за час не страшна, но при масштабных CI‑процессах она быстро превращается в тысячи долларов в месяц. Для компаний, уже платящих $21 за пользователя в месяц за GitHub Enterprise, это выглядит как «пощечина» по кошельку.
Почему эта тема стала горячей? Потому что GitHub давно позиционировал самохост‑рейнджеры как «бесплатный» способ использовать собственную инфраструктуру, а теперь требует платить за каждую минуту её работы. В результате многие команды вынуждены пересчитывать бюджеты, искать альтернативы и менять привычные пайплайны.
В конце вступления – небольшое японское хокку, которое, на мой взгляд, отражает суть происходящего:
Тихий сервер спит,
Но счётчик безмолвно тик‑так,
Кошелёк плачет.
Пересказ Reddit‑поста своими словами
Один из пользователей Reddit поделился новостью: GitHub разослал письмо, в котором объявил о новой плате за самохост‑рейнджеры – $0,002 за минуту. Автор поста быстро посчитал, что для их компании это будет стоить около $3 500 в месяц сверх уже существующего счета за GitHub. В посте была ссылка на официальную страницу GitHub, где описаны изменения цен.
Суть проблемы, хакерский подход и основные тенденции
Что именно изменилось?
- Вводится плата $0,002 / минуту за каждый самохост‑рейнджер.
- Эти минуты теперь учитываются в общем лимите бесплатных минут, предоставляемых в рамках тарифов.
- Для компаний с Enterprise‑тарифом, где обычно предоставляется 50 000 бесплатных минут в месяц, теперь эти бесплатные минуты «съедаются» самохост‑рейнджерами, а не только GitHub‑хостед‑раннерами.
Хакерский подход к проблеме
Технически можно попытаться минимизировать затраты, используя:
- Оптимизацию пайплайнов – сокращение времени сборки, параллелизм только там, где действительно нужен.
- Автоматическое выключение самохост‑рейнджеров в периоды простоя.
- Перенос тяжёлых задач в облачные сервисы с более выгодными тарифами (например, AWS CodeBuild, Azure Pipelines).
Тенденции в индустрии CI/CD
Наблюдается рост конкуренции: Bitbucket недавно объявил о плате за свои самохост‑раннеры, а другие провайдеры (GitLab, Azure DevOps) уже давно взимают плату за вычислительные ресурсы. Это указывает на то, что «бесплатный» CI‑сервис постепенно превращается в платный продукт, где каждый ресурс имеет свою цену.
Детальный разбор проблемы с разных сторон
Точка зрения разработчиков
Для большинства небольших команд и стартапов GitHub Actions был «плюшевым» сервисом: они могли запускать тесты и сборки на собственных серверах без дополнительных расходов. Новая плата заставляет их пересмотреть бюджет и искать альтернативы.
Точка зрения бизнеса
Для крупных компаний, уже платящих за Enterprise‑подписку, добавление $0,002 / минуту выглядит как скрытая надбавка. Кроме того, уменьшение количества «бесплатных» минут снижает ценность текущего тарифного плана.
Точка зрения GitHub
GitHub аргументирует решение тем, что поддержка и развитие платформы Actions требует значительных ресурсов. Самохост‑рейнджеры используют инфраструктуру GitHub (API, хранение артефактов, безопасность), поэтому компания считает справедливым взимать плату за их использование.
Экономический аспект
Если взять среднюю нагрузку в 2 000 часов в месяц (≈ 120 000 минут), то дополнительные расходы составят $240. Для компаний, где CI занимает десятки тысяч минут, цифра быстро растёт до нескольких тысяч долларов.
Практические примеры и кейсы
Кейс 1: Стартап «FinTech‑Lab»
Команда использует 5 самохост‑рейнджеров, каждый из которых работает в среднем 8 часов в сутки. При новых тарифах их ежемесячные расходы выросли с $0 до $1 920 (5 × 8 × 30 × $0,002 × 60). Стартап решил:
- Перейти часть задач в GitHub‑хостед‑раннеры, где первые 2 000 минут бесплатны.
- Внедрить кэширование зависимостей, сократив время сборки на 30 %.
- Настроить автоматическое выключение раннеров в ночное время.
Кейс 2: Корпорация «MegaSoft»
У компании 200 разработчиков, каждый из которых имеет доступ к Enterprise‑тарифу. До изменений они получали 50 000 бесплатных минут в месяц, которые использовались в основном для GitHub‑хостед‑раннеров. После введения платы их самохост‑рейнджеры «съедают» почти весь бесплатный лимит, оставляя лишь несколько тысяч минут для облачных задач. Решения:
- Пересмотр архитектуры CI: тяжелые сборки перенести в собственный кластер Kubernetes, а тесты запускать в облаке.
- Внедрить систему мониторинга расходов CI (Grafana + Prometheus) для точного контроля.
- Переговоры с GitHub о специальных условиях для крупных клиентов.
Экспертные мнения из комментариев
«Я понимаю, что у них есть затраты на поддержку платформы Actions, но когда вы уже платите $21 за пользователя в месяц, это кажется пощечиной. И еще больше возмущает, что они берут плату за сервис, который, как некоторые пользователи считают, не поддерживается и не развивается.»
— TheEdgeOfRage
«Подождите, что? Когда я использую самохост‑рейнджер и плачу за инфраструктуру, мне еще нужно платить Microsoft?»
— omerhaim
«Это даже хуже, чем кажется на первый взгляд, для крупных компаний. Не только вы платите $0,002 за минуту за использование самохост‑рейнджера, но и эти минуты теперь будут учитываться при подсчете общего количества бесплатных минут на вашем аккаунте.»
— ButchMcLargehuge
Ключевые мнения, выделенные из обсуждения:
- «Слишком дорогая плата за уже оплачиваемый сервис» – большинство комментаторов считают, что добавление платы за самохост‑рейнджеры – это двойное налогообложение.
- «Неудовлетворительная поддержка» – некоторые указывают на то, что GitHub Actions часто «запускает» ошибки и требует ручного вмешательства.
- «Тенденция к монетизации всех ресурсов» – сравнение с Bitbucket, который тоже ввел плату за свои раннеры.
- «Необходимость пересмотра CI‑стратегии» – эксперты советуют искать альтернативы и оптимизировать пайплайны.
Возможные решения и рекомендации
Оптимизация текущих пайплайнов
- Разделить задачи на «тяжёлые» и «лёгкие». Тяжёлые – переносить в собственный кластер, лёгкие – оставлять в GitHub.
- Включить кэширование артефактов и зависимостей (actions/cache).
- Установить тайм‑ауты для каждого шага, чтобы не «залипать» в бесконечном ожидании.
- Автоматически выключать самохост‑рейнджеры в периоды простоя (cron‑запуск скриптов).
Поиск альтернативных CI‑платформ
- GitLab CI – бесплатные минуты в рамках собственного сервера.
- Azure Pipelines – 1 800 бесплатных минут в месяц, после чего плата за минуту.
- CircleCI – гибкая модель оплаты за использованные ресурсы.
Переговоры с GitHub
Если ваша компания использует Enterprise‑тариф, стоит обратиться в отдел продаж GitHub и обсудить специальные условия: увеличение бесплатного лимита, скидки на самохост‑рейнджеры или возможность «выключения» учёта минут.
Технические инструменты контроля расходов
Для точного мониторинга расходов CI рекомендуется внедрить:
- Prometheus + Grafana – сбор метрик о времени работы раннеров.
- GitHub Billing API – автоматическое получение данных о расходах.
- Скрипты, которые сравнивают фактическое время работы с плановым бюджетом.
Заключение с прогнозом развития
В ближайшие годы мы, скорее всего, увидим дальнейшее «разделение» бесплатных и платных функций в CI‑сервисах. Платформы будут стремиться монетизировать каждый вычислительный ресурс, а пользователи – искать гибкие и экономичные решения. Для компаний, которые умеют быстро адаптировать свои пайплайны, эта ситуация станет шансом оптимизировать процессы и сократить избыточные расходы. Тем, кто полагается исключительно на один сервис, придётся готовиться к росту затрат.
Практический пример (моделирующий ситуацию)
Ниже представлен скрипт на Python, который собирает данные о времени работы самохост‑рейнджеров через GitHub Billing API, сравнивает их с заданным бюджетом и отправляет уведомление в Slack, если расходы превышают порог.
import os
import requests
import datetime
import json
# Токен доступа к GitHub API (должен иметь права read:org и read:billing)
GITHUB_TOKEN = os.getenv('GITHUB_TOKEN')
# Идентификатор организации
ORG = 'my-organization'
# Порог расходов в долларах
BUDGET_LIMIT = 3000.0
# URL Slack webhook для отправки уведомления
SLACK_WEBHOOK = os.getenv('SLACK_WEBHOOK_URL')
def get_self_hosted_minutes():
"""
Запрашивает количество использованных минут самохост‑рейнджеров
за текущий месяц через GitHub Billing API.
"""
url = f'https://api.github.com/orgs/{ORG}/settings/billing/actions'
headers = {
'Authorization': f'token {GITHUB_TOKEN}',
'Accept': 'application/vnd.github+json'
}
response = requests.get(url, headers=headers)
response.raise_for_status()
data = response.json()
# Поле `total_minutes_used` содержит общее количество минут
return data.get('total_minutes_used', 0)
def calculate_cost(minutes):
"""
Переводит количество минут в стоимость.
Текущая ставка – $0.002 за минуту.
"""
cost_per_minute = 0.002
return minutes * cost_per_minute
def send_slack_alert(cost, minutes):
"""
Отправляет сообщение в Slack, если стоимость превысила лимит.
"""
message = {
"text": f":warning: Превышен бюджет CI! Стоимость: ${cost:.2f} "
f"при использовании {minutes} минут."
}
requests.post(SLACK_WEBHOOK, data=json.dumps(message))
def main():
# Получаем количество использованных минут
minutes = get_self_hosted_minutes()
# Вычисляем текущую стоимость
cost = calculate_cost(minutes)
# Если стоимость превышает лимит – отправляем оповещение
if cost > BUDGET_LIMIT:
send_slack_alert(cost, minutes)
# Выводим информацию в консоль для отладки
print(f"Использовано минут: {minutes}")
print(f"Текущая стоимость: ${cost:.2f}")
if __name__ == '__main__':
main()
Скрипт позволяет в реальном времени отслеживать расходы на самохост‑рейнджеры и быстро реагировать, если они выходят за пределы запланированного бюджета. Его можно запускать ежедневно через cron или в виде GitHub Action, интегрируя мониторинг прямо в процесс CI.
Оригинал