jobs:

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

Ключ jobs: — это YAML-карта верхнего уровня в файле workflow GitHub Actions, определяющая все дискретные единицы работы, выполняемые в рамках CI/CD-пайплайна. Каждый дочерний ключ служит уникальным идентификатором job, на который ссылаются другие части workflow. Каждая запись в jobs: должна указывать значение runs-on: для выбора среды runner, список steps: с фактической работой пайплайна, и необязательный массив needs: для объявления зависимостей от других jobs, управляющих порядком выполнения и позволяющих строить последовательные или fan-out/fan-in топологии пайплайна. Jobs без needs: выполняются параллельно по умолчанию, позволяя GitHub Actions максимизировать пропускную способность, одновременно отправляя независимые jobs сборки, линтинга и тестирования в пул runner. Дополнительные под-ключи jobs: — включая if:, environment:, strategy:, permissions:, timeout-minutes: и outputs: — дают авторам пайплайна детальный контроль над тем, когда выполняется job, какое окружение деплоя задействуется, как долго он может работать и какие данные передаёт нижестоящим jobs. Вдумчивая структура карты jobs: фундаментальна для проектирования эффективной, безопасной и поддерживаемой автоматизации workflow в GitHub Actions, поскольку это главный организационный уровень между триггером события и отдельными шагами, выполняющими реальную работу.

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

jobs:: name, on (триггеры: push, pull_request, schedule, workflow_dispatch, repository_dispatch), jobs (каждый с runs-on, steps, опциональным needs для упорядочивания, if для условий, strategy для matrix), env (env vars), defaults (например default shell), permissions (scope GITHUB_TOKEN). Steps либо uses: action@version, либо run: command. Выражения: ${{ github.event_name }}, ${{ secrets.X }}, ${{ inputs.x }}.

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

Всегда пиньте actions к SHA, не к тегу (uses: actions/checkout@v4 для удобства; uses: actions/checkout@a5ac7e5... для безопасности). permissions: read-all и write только где надо (least privilege для GITHUB_TOKEN). concurrency: — отмена старых запусков на новом коммите. workflow_dispatch: — для ручных триггеров с inputs.

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

Ловушки jobs:: баги отступов YAML (всё тихо валится); pull_request_target без понимания security (запускается против base-ветки с секретами — частый вектор атаки); огромные env-блоки на workflow-уровне (чище per-job или per-step); секреты в ${{ }} непреднамеренно логируются (используйте ::add-mask:: или secret-префикс).

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

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