Биткойн Майнинг и стейкинг

Как ускорить кэширование в GitHub Actions: реверс-инжиниринг и оптимизация

Биткойн Майнинг и стейкинг
Reverse engineering GitHub Actions cache to make it fast

Подробный разбор процесса реверс-инжиниринга кэш-сервиса GitHub Actions и создание высокопроизводительного решения для многократного ускорения работы кэша без изменений в пользовательских файлах.

В современном мире CI/CD-процессов GitHub Actions стал одним из самых популярных инструментов для автоматизации сборок и тестирования. Однако несмотря на широкое распространение и удобство, многие пользователи сталкиваются с ограничениями, связанными с производительностью кэширования. Именно кэш играет ключевую роль в времени выполнения задач: медленные операции с кэшем напрямую замедляют весь процесс, ухудшая опыт разработчиков и увеличивая затраты. Поэтому тема оптимизации GitHub Actions cache вызывает особый интерес среди инженеров по всему миру. Недавно команда специалистов из Blacksmith Software решила полностью переосмыслить традиционный подход к кэшированию в GitHub Actions, взявшись за сложнейшую задачу – реверс-инжиниринг внутреннего протокола и построение быстрой альтернативы, работающей без какого-либо вмешательства со стороны пользователей.

Это позволило добиться повышения производительности кэша в 10 раз по сравнению с оригинальным сервисом GitHub, что является значительным техническим достижением и открывает новые горизонты для оптимизации CI/CD-пайплайнов. До начала работы над проектом у команды Blacksmith уже имелась собственная, более быстрая версия кэширования, но она была реализована через форки популярных первых действий GitHub. Основная проблема этой реализации заключалась в необходимости изменять рабочие файлы и поддерживать множество самостоятельных веток с изменённым кодом. Поддержка такого решения оказалась ресурсоёмкой и плохо масштабировалась, что заставило инженеров подумать об альтернативном подходе, который не требовал бы никаких правок от пользователей. Первым важным шагом стало детальное изучение внутренней архитектуры GitHub Actions cache.

Ранее GitHub использовал собственные действия, завязанные на устаревших технологиях, но недавно была совершена смена инфраструктуры: сервис перешёл на протокол Twirp, основанный на Protobuf, и стал использовать Azure Blob Storage SDK для хранения объектов. Такая радикальная смена архитектурных решений initially выглядела препятствием, но вскоре открыла новые возможности благодаря понятной схеме обмена данными в формате Protobuf. Использование искусственного интеллекта, в частности последних языковых моделей, сыграло ключевую роль в расшифровке взаимодействия API и создании протокольного описания. Это позволило инженерам полностью понять сигналы управления и логику взаимодействия с сервисом. Благодаря этому появился шанс спроектировать легковесную альтернативу, полностью совместимую с оригинальным протоколом, но гораздо более быструю и эффективную.

Другой сложностью стало несоответствие используемых хранилищ: GitHub применял Azure Blob Storage, а Blacksmith использовал MinIO — совместимый с AWS S3 объектный сервер. В реальном мире идеальная взаимозаменяемость облачных хранилищ пока недостижима, поэтому необходимо было тщательно проанализировать структуру сетевых запросов и адаптировать их под API MinIO без нарушения логики работы SDK и протоколов. Для полностью прозрачной работы без изменений со стороны пользователей была реализована система сети-прокси. Запросы виртуальных машин на операции с кэшем направлялись не к оригинальному хранилищу GitHub, а к локальным прокси-серверам. Внутри каждой VM запускался легковесный NGINX-прокси, перенаправляющий трафик на хост-уровень, где работал основной прокси с умной маршрутизацией.

Такой подход позволил ловить все кэш-запросы, фильтруя остальные обращения к сервисам GitHub, например, артефактам. NGINX был выбран за его готовность к установке на стандартные root filesystem и простоту настройки, что исключало сложности при развертывании и поддержке. Такой слой проксирования внутри ВМ также обеспечивал перехват запросов из Docker-контейнеров, что повышало совместимость и удобство для конечного пользователя. Однако одной перенаправляющей прокси недостаточно: Azure SDK ведёт себя иначе в зависимости от имени хоста, оптимизируя операции с blob только для доменов Azure. Чтобы повторить эти оптимизации, разработчикам пришлось создавать собственные URL-обертки, которые затем декодировались и трансформировались внутри прокси в стандартные S3-запросы, позволяя сохранять высокую производительность для загрузок и выгрузок.

Первой попыткой маршрутизации стала подмена DNS внутри виртуальных машин, но для корректного направления трафика требовалась дополнительная настройка iptables. Из-за большого числа VMs и нагруженности системы эти правила быстро стали источником нестабильности и конфликтов, что заставило команду перейти на nftables — современный и более структурированный фильтр пакетов Linux с поддержкой атомарных обновлений конфигураций и простым управлением правилами в рамках пространств имён. После интеграции этой продвинутой системы фильтрации вся релевантная передача данных проходила через прокси, что дало полный контроль над сетью и позволило построить собственный SDK для проксирования запросов между Azure Blob и AWS S3, идеально оптимизированный для потоковой передачи данных. Использование Go и его библиотеки io дало мощные инструменты для реализации пайплайнов данных с минимальным копированием, что критично на больших скоростях передачи множественных параллельных потоков. Любопытной особенностью кэширования является то, что в определённых сценариях лучше не пытаться получить кэш, если есть вероятность задержек из-за проблем с сетью.

Иногда отказ (кэш-мисс) и восстановление кэша с нуля дают лучший пользовательский опыт по сравнению с медленными попытками достать данные. Внедрение такой философии, основанной на реальных наблюдениях в процессе испытаний на масштабе, помогло создать максимально устойчивую систему. В процессе разработки чётко прослеживалась важность тестирования в реальных условиях, поскольку именно реальные пользовательские сценарии выносили на поверхность все тонкости работы c Protobuf, различия в интерпретации данных и несовместимости среди популярных действий от сторонних разработчиков. Вместо стремления к идеальной корректности с нуля команда приняла стратегию «обучения на ошибках», улавливая и исправляя проблемы по мере появления реальной нагрузки. Итогом всех усилий стал быстрый, полностью прозрачный для пользователя кэшинг с значительным опережением стандартного сервиса GitHub Actions.

Клиенты Blacksmith отмечают увеличение скорости операции с кэшем до десяти раз и заметное уменьшение времени работы CI-процессов без необходимости менять ни единую строку в своих workflow-файлах. Данный кейс иллюстрирует, что глубокое понимание внутренних механизмов, грамотное применение современных технологий проксирования и умелое использование инструментов разработки позволяют не просто догнать, а значительно превзойти существующие решения. Помимо технической изящности, этот подход приносит очевидные бизнес-преимущества — уменьшение затрат на инфраструктуру, улучшение пользовательского опыта и рост эффективности команд разработчиков. В конечном счёте, проект Blacksmith по реверс-инжинирингу и ускорению GitHub Actions cache — это наглядный пример того, как инновационный взгляд на давно знакомую проблему в сочетании с современными технологиями может преобразить рабочие процессы и задать новые стандарты качества в индустрии CI/CD.

Автоматическая торговля на криптовалютных биржах Покупайте и продавайте криптовалюты по лучшим курсам Privatejetfinder.com (RU)

Далее
GitHub Copilot app modernization for .NET enters public preview
Четверг, 30 Октябрь 2025 GitHub Copilot для модернизации .NET-приложений: новая эра миграции в облако Azure

GitHub Copilot вошёл в стадию публичного предварительного просмотра с возможностями модернизации . NET-приложений для плавного и эффективного перехода в Azure.

Humans, not glacial transport, brought bluestones to Stonehenge, new research
Четверг, 30 Октябрь 2025 Новые исследования подтверждают: меловые камни Стоунхенджа доставлены людьми, а не ледником

Уникальные научные данные доказали, что знаменитые голубые камни Стоунхенджа были перенесены на место обители древними людьми, а не ледниковыми движениями, что полностью меняет взгляды на строительство этого мегалита.

End-to-end long-horizon reasoning with one Transformer model
Четверг, 30 Октябрь 2025 Эффективное долговременное рассуждение с помощью одной модели Transformer: новый уровень искусственного интеллекта

Современные Transformer-модели открывают новые горизонты для долговременного рассуждения и комплексного управления задачами. Узнайте, как технологии, такие как Thread Inference Model (TIM), меняют правила игры в области агентного программирования и автоматизации сложных процессов без лишней инфраструктурной нагрузки.

Goldman Sachs, BNY Mellon Launch Tokenized Money-Market Funds
Четверг, 30 Октябрь 2025 Goldman Sachs и BNY Mellon запускают токенизированные денежные фонды: будущее финансовых рынков

Goldman Sachs и Bank of New York Mellon представляют инновационное решение — токенизацию фондов денежного рынка, что открывает новую эру для институциональных инвесторов с ускоренными расчетами, повышенной прозрачностью и снижением операционных рисков на сумму более 7 триллионов долларов.

Early PUMP holders gamble on rebound amid steep losses of over 40%
Четверг, 30 Октябрь 2025 Риски и надежды: как ранние держатели PUMP ставят на восстановление после падения более чем на 40%

Обзор ситуации с токеном PUMP, который столкнулся с резким падением цены, и анализ стратегий ранних инвесторов, некоторые из которых предпочитают фиксировать прибыль, а другие верят в скорое восстановление.

SAP Reports Mixed Results. The AI Stock Is Falling
Четверг, 30 Октябрь 2025 SAP фиксирует смешанные результаты, акции ИИ-сектора падают на фоне новых вызовов

Анализ последних финансовых отчетов SAP и динамики акций компаний, связанных с искусственным интеллектом. Рассмотрение факторов, влияющих на текущие результаты и прогнозы развития рынка ИИ.

Freeport-McMoRan Stock Falls on Earnings. Tariffs Could Drive Up Costs
Четверг, 30 Октябрь 2025 Падение акций Freeport-McMoRan на фоне отчетности: влияние тарифов на рост издержек

Подробный анализ причин снижения акций Freeport-McMoRan после публикации финансовых результатов и потенциального влияния тарифной политики на увеличение производственных затрат компании.