GitHub Actions — это мощный инструмент для автоматизации CI/CD-процессов, но чтобы создавать и настраивать workflow (рабочие процессы), нужно знать один важный язык — YAML. В этой статье мы разберем YAML для начинающих. Без понимания его синтаксиса невозможно корректно описать инструкции для GitHub Actions.
В этой статье мы подробно разберём, что такое YAML, чем он похож на JSON, как устроен его синтаксис и какие типы данных он поддерживает.
Что такое YAML
YAML (YAML Ain’t Markup Language) — это язык сериализации данных, созданный для хранения и обмена структурированной информацией. Он не является языком программирования, а используется для описания данных в человекочитаемом виде.
GitHub Actions использует YAML для описания workflow-файлов, которые определяют, какие задачи нужно выполнять при определённых событиях. Эти файлы обычно хранятся в папке:
.github/workflows/
и имеют расширение:
.yml
или
.yaml
Оба варианта равнозначны — можно использовать любое расширение.
Связь YAML и JSON
Если вы уже работали с JSON, то YAML покажется вам интуитивно понятным. Оба языка решают одну задачу — хранение структурированных данных, таких как объекты, массивы, строки, числа и булевы значения.
Однако YAML проще читать: он избавляется от скобок и запятых, заменяя их отступами и двоеточиями.
Пример сравнения:
JSON:
{
"name": "Build Workflow",
"on": ["push", "pull_request"],
"jobs": {
"build": {
"runs-on": "ubuntu-latest",
"steps": [
{ "name": "Checkout code", "uses": "actions/checkout@v4" },
{ "name": "Run tests", "run": "npm test" }
]
}
}
}
YAML:
name: Build Workflow
on:
- push
- pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run tests
run: npm test
Оба примера описывают одно и то же, но YAML выглядит значительно лаконичнее и легче воспринимается человеком.
Основные типы данных в YAML
YAML поддерживает все базовые типы данных, знакомые по JSON:
- строки (string)
- числа (number)
- булевы значения (boolean) —
true,false - null —
nullили~ - массивы (list)
- объекты (map)
Пример разных типов:
string_value: "Hello world"
integer_value: 42
boolean_true: true
boolean_false: false
null_value: null
list_example:
- apple
- banana
- cherry
object_example:
name: Alex
age: 28
skills:
- PHP
- JavaScript
Как работают отступы и форматирование
Главная особенность YAML — структура определяется пробелами.
Каждый уровень вложенности должен быть с одинаковым количеством пробелов (чаще всего — два).
❌ Ошибка:
steps:
- name: Checkout
uses: actions/checkout@v4
✅ Правильно:
steps:
- name: Checkout
uses: actions/checkout@v4
Использование неправильных отступов — самая частая ошибка новичков. Именно поэтому полезно установить в редакторе плагин для YAML, который подсвечивает синтаксические ошибки.
Комментарии в YAML
В отличие от JSON, в YAML можно оставлять комментарии.
Они начинаются с символа #:
# Это имя workflow
name: Test Workflow
# События, при которых запускается процесс
on:
- push
- pull_request
Комментарии очень удобны при описании сложных workflow, особенно если над проектом работает команда.
Массивы в YAML
Массивы (списки) можно записывать двумя способами:
Многострочный формат (предпочтительный):
steps:
- name: Install dependencies
run: npm install
- name: Run build
run: npm run build
Однострочный формат:
on: [push, pull_request]
Оба синтаксиса корректны, но первый читается лучше при длинных списках.
Объекты и вложенные структуры
Объекты (или словари) в YAML задаются через двоеточие и отступы:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
Можно также создавать вложенные объекты:
server:
database:
host: localhost
user: root
password: secret
Каждый уровень вложенности отделяется двумя пробелами.
Переносы строк и специальные символы
Если вам нужно указать многострочный текст, используйте символ | или >:
Символ | сохраняет переносы строк:
description: |
This is a long text.
It contains multiple lines.
Символ > объединяет строки в одну (переносы заменяются пробелами):
description: >
This is a long text
written in multiple lines,
but displayed as one.
Null и специальные значения
Для обозначения отсутствующего значения можно использовать:
empty_value: null
or_another_way: ~
Почему YAML важен для GitHub Actions
Каждый workflow в GitHub Actions описывается именно на YAML.
В нём вы определяете:
- события, при которых запускается процесс (
on:) - работы (jobs) и их конфигурацию
- этапы (steps), выполняемые внутри каждого job
- действия (actions), которые нужно запустить
YAML в GitHub Actions — это своего рода “карта” вашего CI/CD-процесса.
Практические советы
- Используйте плагин YAML для своего редактора кода (VS Code, JetBrains, Sublime).
Он поможет избежать синтаксических ошибок и подсветит неправильные отступы. - Проверяйте YAML-файлы онлайн — например, через конвертер
yaml-online-parserилиjson2yaml, чтобы понять, как структура данных отображается в JSON. - Старайтесь писать читаемо. YAML создан не только для машин, но и для людей, поэтому аккуратное форматирование — ключ к простоте поддержки.
Заключение
YAML — это простой, но мощный язык описания данных, без которого невозможно работать с GitHub Actions. Он помогает задавать структуру workflow-файлов в понятном и визуально чистом формате. Освоив основы YAML, вы сможете легко создавать, читать и изменять автоматизации в своих проектах.

