Одна из самых классных вещей в Github Action – экшены. С их помощью значительно сокращается количество кода в воркфлоу, а стандартный цикл сборки и тестирования проходит буквально за минуты на любом стеке.
В предыдущих уроках мы уже встречались с несколькими экшенами. Чаще всего в сборках используется экшен checkout, который клонирует репозиторий в рабочую директорию:
steps:
- uses: actions/checkout@v4
Отметим несколько деталей. Экшен работает как один из шагов задания. Для этого вместо ключа run
используется ключ uses
, за которым идет имя экшена. Откуда берется это имя? Из каталога экшенов. Причем там могут быть как встроенные Github Actions, так и созданные сторонними пользователями. Понять, что и откуда можно по имени экшена, оно соответствует структуре ссылок самого Github: имя пользователя или команды/название репозитория. Встроенные экшены находятся в команде actions.
Кроме имени экшена Github требует указания его версии. Это сделано в целях надежности, чтобы обновления экшена не могли привести к случайной поломке всех репозиториев, которые его используют. Следить за версиями придется самостоятельно, поглядывая в README конкретного репозитория с экшеном.
У экшена могут быть параметры. Они задаются через ключ with
:
steps:
- uses: actions/checkout@v4
# https://github.com/actions/setup-node
- uses: actions/setup-node@v4
with:
node-version: '18.x'
cache: 'npm' # ускоряет повторные сборки
- run: npm ci
- run: npm test
А вот пример стороннего экшена, который запускает тесты на фреймворке cypress:
name: End-to-end tests
on: [push]
jobs:
cypress-run:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
# Устанавливает зависимости, кеширует их и запускает тесты
- uses: cypress-io/github-action@v6
Самостоятельная работа
-
Создайте Воркфлоу, если этого еще не сделали. Добавьте в него клонирование репозитория, установку Node, установку проекта и запуск тестов.
-
Добавьте в воркфлоу экшен hexlet-components/hello-from-hexlet-action, который мы для вас подготовили. Он не делает ничего полезного, просто выводит строку Hello from Hexlet!. Имя экшена: hexlet-components/hello-from-hexlet-action@release
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.