Готовые экшены: 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Создаёт релиз
Поддержать проект