shell steps в actions

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

Shell steps в GitHub Actions представляют собой простые и эффективные инструменты для выполнения команд, которые не требуют создания переиспользуемого action. Они идеально подходят для выполнения разовых команд, таких как запуск скриптов, выполнение тестов или подготовка окружения. Shell шаги выполняются в оболочке runner'а по умолчанию — bash на Linux/macOS, PowerShell на Windows — или в любой явно заданной оболочке через shell: pwsh, shell: python или shell: bash. Это позволяет разработчикам сосредоточиться на конкретных задачах, не создавая лишних сложностей.

Actions, напротив, представляют собой версионированные единицы поведения, упакованные как JavaScript, Docker или составные бандлы и потребляемые через uses: owner/repo@ref. Они подходят для случаев, когда одна логика должна работать в нескольких workflow. Смешивание shell-шагов и actions в одном задании позволяет CI/CD-пайплайну оставаться лаконичным: используйте actions для настройки, кэширования и примитивов деплоя, а shell-шаги — для специфического связующего кода.

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

Shell steps в actions пакетируют несколько шагов в один переиспользуемый action без написания JavaScript или Docker-контейнера. Это достигается путем определения шагов в файле action.yml с использованием ключа runs: using: "composite" и списка steps:. Внутри этого файла можно определить входные (inputs:) и выходные (outputs:) параметры, что позволяет передавать данные между шагами и другими действиями.

Хранятся такие действия в корне репозитория или в поддиректориях, и они могут быть вызваны через ссылку, например uses: ./.github/actions/my-action для локальных действий или uses: org/repo/.github/actions/x@sha для удаленных действий. Это делает их легко доступными для переиспользования в рамках одного репозитория или даже в нескольких репозиториях.

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

Composite actions идеально подходят для дедупликации повторяющихся шагов между разными workflow. Например, можно создать composite action для выполнения таких шагов, как настройка окружения, кэширование данных и установки необходимых компонентов. Это позволяет избежать дублирования кода и упрощает поддержку и обновление логики.

Composite actions также могут быть созданы как локальные действия для внутреннего использования в одном репозитории или как публичные действия, которые могут быть переиспользованы другими командами. Smoke-test workflow, который запускает composite action, может быть использован для быстрого тестирования и отладки.

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

Одной из распространенных ошибок при использовании shell steps в actions является глубокая вложенность composite actions, которые вызывают другие composite actions. Это усложняет отладку и понимание логики выполнения. Другой распространенной ошибкой является отсутствие версионирования вашего action, что может привести к непредсказуемым результатам при использовании ссылок, таких как main. Большие composite actions, которые пытаются выполнять "всё", также могут быть проблематичными, так как они усложняют отладку и поддержку.

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

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