setup-node/setup-python

Тема дорожной карты · GitHub Actions

actions/setup-node и actions/setup-python — это официальные шаги GitHub Actions, которые устанавливают конкретные версии Node.js и Python на runner'е соответственно. Эти шаги настраивают кэширование зависимостей для ускорения последующих сборок и открывают соответствующие бинарные файлы в PATH. Обычно вызываются как uses: actions/setup-node@v4 и uses: actions/setup-python@v5, где node-version: '20' или python-version: '3.9' определяют версию Node.js или Python, которую нужно установить. Опционально можно указать параметр cache: 'npm' или cache: 'pip' для восстановления зависимостей между запусками workflow. Действие также поддерживает аутентификацию в приватном npm- или PyPI-реестре, записывая соответствующие конфигурационные файлы, что позволяет публиковать пакеты из CI/CD среды. Использование setup-node и setup-python вместо ручной установки обеспечивает воспроизводимость версий инструментальной цепочки, более быстрые сборки через кэш и матричное покрытие всех поддерживаемых LTS-версий.

Как это работает

actions/setup-node и actions/setup-python представляют собой шаги GitHub Actions, которые выполняют установку конкретных версий Node.js и Python на runner. Эти шаги также настраивают кэширование зависимостей, что ускоряет последующие сборки, и открывают соответствующие бинарные файлы в PATH. Они вызываются с помощью ключевого слова uses и указывают версию Node.js или Python, которую необходимо установить. Дополнительно, эти шаги могут использовать параметр cache для восстановления зависимостей между запусками workflow. В случае использования приватного npm- или PyPI-реестра, шаги записывают соответствующие конфигурационные файлы, такие как .npmrc или .pypirc, что позволяет публиковать пакеты из CI/CD среды. Использование этих шагов вместо ручной установки Node.js или Python обеспечивает воспроизводимость версий инструментальной цепочки, более быстрые сборки через кэш и матричное покрытие всех поддерживаемых LTS-версий.

Когда применять

Всегда начинайте workflow с шага actions/checkout, чтобы получить доступ к исходным файлам. Затем используйте setup-node или setup-python для установки и настройки версий Node.js или Python соответственно. Эти шаги особенно полезны при использовании кэширования зависимостей, что позволяет ускорить последующие сборки и обеспечивает воспроизводимость версий инструментальной цепочки. Они также подходят для использования в матричных сборках, где необходимо покрыть все поддерживаемые LTS-версии.

Типичные ошибки

При использовании setup-node и setup-python могут возникнуть различные проблемы. Например, не указание параметра fetch-depth: 0 может привести к тому, что вы не получите полную историю коммитов, что может быть критически важно для функций, таких как blame, log или tag-detection. Дорогие шаги безусловного выполнения могут привести к ненужным затратам времени на сборку, особенно если такие шаги выполняются на каждом коммите, включая изменения только в документации. Неправильное использование переменных в run: команде может привести к ошибкам shell-эскейпинга, что требует правильного экранирования переменных, таких как "$VAR" вместо $VAR. Наконец, использование временных файлов для передачи состояния между шагами может привести к нежелательным побочным эффектам, особенно если эти файлы не удаляются после использования. Вместо этого следует использовать переменные окружения, такие как $GITHUB_ENV, для передачи состояния между шагами.

Связанные понятия

Полезные ресурсы