Больше не ждем! Как act запускает GitHub Actions прямо у вас на машине

01 Jun, 2026
70,893
🔱 1,963
👥 194

Знакомая ситуация? Вы пишете новый GitHub Action или отлаживаете существующий воркфлоу. Вносите изменение, коммитите, пушите, ждете, пока GitHub-раннер поднимется, скачает зависимости, выполнит шаги... И вот, спустя несколько минут, видите ошибку. Снова правка, снова коммит, снова пуш. Этот цикл "изменение-ожидание-проверка" может быть невероятно утомительным и замедлять разработку до неприличия. Особенно, когда речь идет о сложных многоступенчатых пайплайнах.

Что, если бы вы могли запускать свои GitHub Actions локально, прямо на своей машине, получая мгновенный фидбек? Звучит как мечта, не правда ли? Но это не мечта, а реальность благодаря проекту, о котором я хочу рассказать сегодня – nektos/act.

Что такое act и зачем он нужен каждому разработчику?

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

Кому это пригодится? Да практически каждому, кто активно использует GitHub Actions для CI/CD, автоматизации рутинных задач или даже просто для тестирования своих проектов. Если вы хотя бы раз сталкивались с необходимостью быстро проверить, как поведет себя ваш воркфлоу после небольшого изменения, act станет вашим незаменимым помощником.

act в действии: ключевые возможности, которые меняют игру

Давайте разберем, что именно делает act таким полезным и почему его стоит добавить в свой инструментарий.

Реклама

1. Мгновенный фидбек и ускоренная отладка

Это, пожалуй, главная "фишка" act. Вместо того чтобы пушить каждый раз, когда вы хотите проверить изменения в файлах .github/workflows/ или в самих экшенах, вы просто запускаете act локально.

act

И видите результат сразу же. Больше никаких "отладочных" коммитов, засоряющих историю репозитория, и никаких долгих ожиданий. Это значительно сокращает цикл разработки и позволяет сосредоточиться на логике, а не на инфраструктуре.

2. Локальный раннер задач: прощай, Makefile?

Интересно, что act может заменить даже ваш старый добрый Makefile или другие локальные скрипты для автоматизации задач. Если у вас уже есть определенные шаги, описанные в GitHub Actions, зачем дублировать их в другом месте? act позволяет использовать эти же воркфлоу для запуска локальных задач.

Например, если у вас есть воркфлоу для сборки проекта, вы можете просто вызвать его через act для локальной сборки:

act -j build_project

Это помогает избежать дублирования логики и поддерживает единообразие в управлении задачами.

3. Точное соответствие окружению GitHub

Одна из самых важных деталей: act не просто запускает ваши скрипты, он максимально точно эмулирует окружение, которое предоставляет GitHub. Это включает в себя:

  • Переменные окружения: Все стандартные переменные окружения GitHub Actions (например, GITHUB_SHA, GITHUB_REF, GITHUB_WORKSPACE) будут доступны и настроены так, как будто вы работаете в облаке.
  • Файловая система: Структура директорий и доступ к файлам также максимально приближены к реальному раннеру GitHub.

Это гарантирует, что ваш воркфлоу, успешно отработавший локально с act, с высокой вероятностью так же успешно выполнится и на GitHub.

4. Интеграция с VS Code

Для тех, кто предпочитает работать в интегрированной среде разработки, есть отличная новость! Существует расширение для Visual Studio Code – GitHub Local Actions, которое позволяет управлять и запускать act прямо из редактора. Это делает процесс отладки еще более удобным и интуитивно понятным.

Как act творит магию: немного о внутренней кухне

Как же act удается так точно эмулировать GitHub Actions? Секрет прост и элегантен: Docker.

Когда вы запускаете act, он считывает ваши .github/workflows/ файлы и определяет, какие экшены нужно выполнить. Затем он использует Docker API для:

  1. Загрузки или сборки образов: Для каждого шага воркфлоу, который требует определенной среды (например, ubuntu-latest или кастомный Docker-образ), act либо скачивает нужный образ, либо собирает его, если это необходимо.
  2. Создания контейнеров: Каждый экшен запускается в отдельном Docker-контейнере.
  3. Настройки окружения: Внутри этих контейнеров act тщательно настраивает все переменные окружения и монтирует файловую систему таким образом, чтобы она полностью соответствовала тому, что вы ожидаете от стандартного раннера GitHub.

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

Проект написан на Go, что обеспечивает высокую производительность и кроссплатформенность.

Кому пригодится act в повседневной работе?

  • Разработчикам, создающим кастомные GitHub Actions: Вы можете быстро итерировать над своим экшеном, тестируя его локально, прежде чем публиковать.
  • Командам, внедряющим или отлаживающим сложные CI/CD пайплайны: Сократите время на отладку, выявляя проблемы до того, как они попадут на удаленный сервер.
  • Тем, кто хочет использовать GitHub Actions как локальный таск-раннер: Упростите свои скрипты автоматизации, используя уже существующие воркфлоу.
  • Студентам и новичкам: Отличный способ изучить GitHub Actions без необходимости постоянно пушить код на GitHub.

Посмотрите, как это выглядит в действии:

Demo

Выводы: стоит ли попробовать act?

Однозначно, да! nektos/act – это настоящий геймченджер для всех, кто работает с GitHub Actions. Он решает одну из самых насущных проблем – медленный цикл обратной связи – и превращает его в мгновенный процесс. Это не просто инструмент для отладки; это полноценный локальный раннер, который может значительно упростить вашу повседневную работу, сделать её быстрее и приятнее.

Если вы устали от бесконечных ожиданий и хотите получить полный контроль над своими GitHub Actions, не покидая локальной среды, act – это то, что вам нужно. Попробуйте его, и я уверен, вы зададитесь вопросом, как вы жили без него раньше.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.