Больше не ждем! Как act запускает GitHub Actions прямо у вас на машине
Знакомая ситуация? Вы пишете новый 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 для:
- Загрузки или сборки образов: Для каждого шага воркфлоу, который требует определенной среды (например,
ubuntu-latestили кастомный Docker-образ),actлибо скачивает нужный образ, либо собирает его, если это необходимо. - Создания контейнеров: Каждый экшен запускается в отдельном Docker-контейнере.
- Настройки окружения: Внутри этих контейнеров
actтщательно настраивает все переменные окружения и монтирует файловую систему таким образом, чтобы она полностью соответствовала тому, что вы ожидаете от стандартного раннера GitHub.
Таким образом, каждый шаг вашего воркфлоу выполняется в изолированной, но при этом максимально аутентичной среде. Это очень умный подход, который обеспечивает высокую надежность и предсказуемость.
Проект написан на Go, что обеспечивает высокую производительность и кроссплатформенность.
Кому пригодится act в повседневной работе?
- Разработчикам, создающим кастомные GitHub Actions: Вы можете быстро итерировать над своим экшеном, тестируя его локально, прежде чем публиковать.
- Командам, внедряющим или отлаживающим сложные CI/CD пайплайны: Сократите время на отладку, выявляя проблемы до того, как они попадут на удаленный сервер.
- Тем, кто хочет использовать GitHub Actions как локальный таск-раннер: Упростите свои скрипты автоматизации, используя уже существующие воркфлоу.
- Студентам и новичкам: Отличный способ изучить GitHub Actions без необходимости постоянно пушить код на GitHub.
Посмотрите, как это выглядит в действии:

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