steps:
Тема дорожной карты · GitHub Actions
Ключ steps внутри задания представляет собой упорядоченный список шагов, которые выполняются runner'ом. Каждый шаг может быть либо shell-блоком run:, либо вызовом действия через uses:. Шаги в рамках одного задания разделяют файловую систему, переменные окружения и рабочий каталог runner'а. Это делает ранний шаг actions/checkout ключевым, так как он делает репозиторий доступным для всех последующих шагов задания. Каждый шаг может иметь собственные параметры, такие как name, id, условие if, env, working-directory, continue-on-error и timeout-minutes, что позволяет детально управлять условным выполнением и семантикой сбоев. Тщательно спроектированные шаги — небольшие, целенаправленные и идемпотентные — служат основой для отлаженных GitHub Actions workflow, так как их выходные данные могут быть использованы в выражениях, таких как ${{ steps.build.outputs.version }}.
Как это работает
Шаги задания могут быть либо вызовом действия через uses:, либо выполнением команд через run:. В выражениях можно использовать переменные окружения, такие как ${{ github.event_name }}, секреты ${{ secrets.X }} и входные параметры ${{ inputs.x }}. Каждый шаг задания имеет уникальное имя и может быть связан с другими шагами через needs:. Также шаги могут быть выполнены только при определенных условиях, заданных через if:. Для управления параллелизмом и стратегией выполнения используется ключ strategy, который позволяет использовать матричные стратегии.
Когда применять
Шаги задания следует использовать всегда, когда требуется выполнение конкретной задачи, такой как проверка кода, сборка или тестирование. Всегда следует пинить действия к конкретному коммиту (SHA), а не к тегу, чтобы гарантировать стабильность и повторяемость выполнения. Для управления доступом к репозиторию и секретам используются права доступа, которые должны быть наименьшими необходимыми (least privilege). Также можно использовать ключ concurrency для управления параллелизмом и отмены старых запусков на новом коммите. Для ручного запуска заданий через интерфейс GitHub используются триггеры workflow_dispatch.
Типичные ошибки
Типичные ошибки при использовании шагов могут включать баги отступов YAML, которые могут привести к тихому падению шага. Также стоит избегать использования триггера pull_request_target, если не понимается связанный с ним риск безопасности. Большой env-блок на уровне всего workflow может усложнять управление переменными окружения. Секреты, которые используются в выражениях ${{ }}, могут быть непреднамеренно логированы, что может привести к утечке информации.