Найти в Дзене
Цифровая Переплавка

🚀 Act: Как запускать GitHub Actions локально и ускорить разработку

Разработчикский ноутбук с терминалом и визуальными элементами автоматизации — шестерёнками и диаграммами, отражающими идею локального выполнения задач и гибкости в разработке
Разработчикский ноутбук с терминалом и визуальными элементами автоматизации — шестерёнками и диаграммами, отражающими идею локального выполнения задач и гибкости в разработке

Практически каждый разработчик сталкивался с ситуацией, когда очередной push в репозиторий превращается в долгий цикл ожидания завершения всех проверок GitHub Actions. Это особенно раздражает, если ошибка была мелкой, а исправление заняло считанные секунды. Но теперь появилась возможность избавиться от этого неудобства благодаря проекту Act от команды nektos.

🔍 Что такое Act и зачем он нужен?

Act — это инструмент командной строки, который позволяет запускать GitHub Actions локально на компьютере разработчика. Основная цель проекта — ускорить получение обратной связи о работоспособности конфигураций ваших workflow-файлов (.github/workflows), не отправляя код на серверы GitHub.

Если говорить просто, Act даёт возможность не «гадать», сработают ли изменения в YAML-файле Action после очередного push'а, а сразу проверять их прямо на своём рабочем месте, экономя драгоценное время.

🛠️ Как работает Act изнутри?

Act построен на языке Go и использует Docker для создания среды выполнения, идентичной облачной инфраструктуре GitHub. Вот как выглядит работа инструмента пошагово:

🐳 Загрузка или создание Docker-контейнеров:
Act просматривает файлы вашего workflow и находит образы Docker, которые используются для выполнения заданий. Затем он загружает или собирает эти образы локально.

🔄 Определение порядка выполнения:
После подготовки контейнеров Act разбирает зависимости и запускает контейнеры в правильной последовательности, точно так же, как это сделал бы GitHub Actions.

Запуск локальных проверок:
Среда выполнения полностью имитирует окружение GitHub, включая переменные окружения, директории и файлы. Это обеспечивает максимально точное воспроизведение условий работы Action.

🌟 Практическое применение Act

Применений у инструмента масса, и вот наиболее яркие примеры:

Быстрая отладка workflow:
Не нужно тратить время на долгие ожидания облачных проверок. Проверяйте изменения сразу и устраняйте ошибки до push’а.

🧑‍💻 Замена Makefile:
Act может использоваться как универсальный планировщик задач, позволяя заменить устаревшие Makefile. Например, разработчик может определить набор локальных задач и запускать их через Act без необходимости создавать отдельные bash-скрипты.

📌 Интеграция с VS Code:
Недавно появилась возможность запускать Act прямо из редактора Visual Studio Code с помощью плагина GitHub Local Actions, что делает процесс разработки ещё удобнее и быстрее.

🎯 Личное мнение автора: почему Act – необходимый инструмент для разработчиков?

Как практикующий разработчик и DevOps, я считаю, что подобные инструменты должны стать стандартом в нашей повседневной работе. Act не просто экономит время, он существенно повышает качество итогового кода:

  • 🚦 Меньше ошибок:
    Когда у вас есть возможность мгновенно проверять workflow локально, вы минимизируете вероятность того, что ошибки попадут в репозиторий.
  • 💡 Обучение и эксперименты:
    Локальный запуск позволяет свободно экспериментировать с GitHub Actions без риска «сломать» что-то в рабочем проекте.
  • ♻️ Экономия ресурсов:
    Вы не тратите драгоценные минуты или квоты GitHub Actions, проверяя свои действия локально.

Однако стоит отметить, что инструмент имеет некоторые ограничения, особенно связанные с ресурсами локального компьютера и производительностью Docker. Тем не менее, плюсы многократно перевешивают минусы.

📗 Заключение

Act — отличный пример того, как современные инструменты DevOps делают процесс разработки более эффективным и приятным. Используя такие решения, команды значительно ускоряют цикл разработки и релиза своих продуктов, что в итоге даёт преимущество на рынке и повышает качество работы всей команды.

🔗 Полезные ссылки: