Готовые экшены: checkout, setup-node, setup-python
Используем готовые кирпичики из Marketplace вместо ручных скриптов установки.
Action — упакованная переиспользуемая логика, которую подключают строкой
uses: owner/repo@версия.
Зачем нужны готовые экшены
Установить нужную версию Node вручную — это несколько команд, кэш, настройка PATH. Готовый экшен делает это одной строкой и одинаково на всех ОС. Самые ходовые поддерживает сама команда GitHub (namespace actions/).
actions/checkout
Клонирует репозиторий на runner. Почти всегда — первый шаг.
- uses: actions/checkout@v4
actions/setup-node
Ставит нужную версию Node.js и (опционально) включает кэш менеджера пакетов. Параметры передают через блок with:
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
actions/setup-python
Аналогично для Python:
- uses: actions/setup-python@v5
with:
python-version: "3.12"
Про версии: @v4 — это важно
После @ указывают, какую версию экшена брать. Это критично для надёжности:
| Запись | Что значит |
@v4 | Плавающий мажорный тег: последняя 4.x. Удобно, обновления безопасности приходят сами. |
@v4.1.1 | Жёсткая версия. Полностью предсказуемо, но обновлять вручную. |
@<sha> | Привязка к конкретному коммиту — максимально безопасно для чужих экшенов. |
Не используйте @main или @master у сторонних экшенов: ветка может измениться в любой момент и сломать (или скомпрометировать) ваш пайплайн.
Полный мини-пример
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- run: npm ci
- run: npm test
Итог
- Готовые экшены подключаются через
uses, параметры — черезwith. checkout,setup-node,setup-pythonпокрывают типовую подготовку окружения.- Закрепляйте версию (
@v4или SHA); избегайте@mainу чужих экшенов.
Проверьте себя
1. Как передать параметры (например, версию Node) готовому экшену?
AЧерез ключ run
BЧерез блок with под uses
CЧерез переменную окружения PATH
DЧерез ключ runs-on
2. Почему не стоит подключать сторонний экшен как owner/action@main?
Amain работает только в приватных репозиториях
BВетка main может измениться в любой момент и сломать или скомпрометировать пайплайн
CGitHub запрещает использовать main
Dmain медленнее качается
3. Что делает actions/checkout?
AУстанавливает Node.js
BКлонирует репозиторий на runner, чтобы код стал доступен шагам
CДеплоит проект на сервер
DСоздаёт релиз