Ключевые понятия: workflow, job, step, action, runner
Разбираем словарь GitHub Actions, без которого дальше будет каша в голове.
Workflow — это автоматизированный процесс, описанный в одном YAML-файле; он состоит из одного или нескольких jobs, каждый из которых — последовательность steps.
Иерархия сущностей
Вся модель GitHub Actions — это матрёшка из пяти понятий. Запомните вложенность:
| Понятие | Что это |
| Workflow | Весь процесс целиком, один .yml-файл. Реагирует на события. |
| Job | Группа шагов, выполняется на отдельном раннере. Jobs по умолчанию идут параллельно. |
| Step | Один шаг внутри job: либо запуск команды (run), либо вызов экшена (uses). |
| Action | Переиспользуемый блок логики, который подключают через uses (например, checkout). |
| Runner | Машина (VM или контейнер), на которой выполняется job. GitHub даёт ubuntu, windows, macos. |
Как они связаны
Workflow содержит jobs. Каждый job выполняется на своём runner и состоит из steps. Step либо вызывает action (uses), либо выполняет shell-команду (run). Важная деталь: каждый job стартует на чистой машине и по умолчанию не делит файлы с другими jobs — между ними данные передают через артефакты или зависимости.
Минимальный пример со всеми понятиями
Ниже — крошечный workflow, где видно сразу всё: триггер, один job, runner и два step (один — action, другой — команда).
name: Привет CI
on: push
jobs:
greet: # это job
runs-on: ubuntu-latest # это runner
steps:
- uses: actions/checkout@v4 # step через action
- run: echo "Сборка проекта" # step через команду
Здесь greet — единственный job, он выполняется на runner ubuntu-latest, внутри два step: первый подключает готовый action actions/checkout, второй просто печатает строку командой.
Steps: run против uses
Это два кита, на которых стоят все шаги:
uses: owner/repo@version— подключить чужой (или свой) action из репозитория.run: команда— выполнить shell-команду на runner.
Один step может быть только одним из двух — нельзя совмещать uses и run в одном шаге.
Итог
- Вложенность: workflow → jobs → steps; jobs живут на runners, steps вызывают actions или команды.
- Jobs по умолчанию параллельны и изолированы друг от друга.
usesподключает action,runвыполняет команду — в одном шаге что-то одно.