В этой статье
Что такое YAML и зачем его валидировать
YAML, что расшифровывается как YAML Ain't Markup Language, — это удобный для человека формат сериализации данных, широко используемый для файлов конфигурации, конвейеров CI/CD, инфраструктуры как код и обмена данными. Его синтаксис на основе отступов делает его читаемым, но в то же время крайне чувствительным к ошибкам пробелов, невидимым невооружённым глазом.
Валидация YAML перед развёртыванием критически важна, поскольку даже один неправильно расположенный пробел или неверный уровень отступа может привести к парсингу конфигурации не так, как предполагалось, или к полному сбою парсинга. Сломанный файл YAML в манифесте Kubernetes, стеке Docker Compose или рабочем процессе GitHub Actions может вывести из строя сервисы или заблокировать развёртывание.
Как работает валидатор YAML
Валидатор анализирует ваш YAML-ввод и сообщает о синтаксических ошибках с точным указанием номеров строк и столбцов, чтобы вы могли мгновенно исправить проблемы.
- Вставьте YAML — введите или вставьте YAML-содержимое любого размера, и валидатор немедленно проанализирует его в вашем браузере
- Просмотрите детали ошибок — если YAML некорректен, валидатор выделяет точную строку и столбец, где произошёл сбой парсера, с понятным сообщением об ошибке
- Проверяйте структуру — помимо синтаксиса, валидатор проверяет наличие дублирующихся ключей, некорректных типов и других структурных проблем, которые могут вызвать неожиданное поведение
- Форматируйте вывод — валидный YAML автоматически форматируется с единообразными отступами, чтобы вы могли скопировать чистую версию обратно в проект
Попробуйте бесплатно — без регистрации
Открыть валидатор YAML →Распространённые ошибки YAML и способы их исправления
Синтаксис YAML обманчиво прост, и несколько паттернов ошибок регулярно встречаются в реальных файлах конфигурации.
- Ошибки отступов — YAML использует пробелы для вложенности, и смешивание табуляций с пробелами или использование непоследовательных уровней отступов является самой распространённой причиной сбоев парсинга
- Неэкранированные специальные символы — значения, содержащие двоеточия, решётки или фигурные скобки, должны быть заключены в кавычки, чтобы парсер не интерпретировал их как синтаксис YAML
- Дублирующиеся ключи — YAML допускает одинаковые ключи на одном уровне, но сохраняется только последнее значение, что тихо перезаписывает предыдущие значения и вызывает трудноуловимые баги
Часто задаваемые вопросы
В чём разница между YAML и JSON?
YAML является надмножеством JSON, то есть каждый валидный документ JSON также является валидным YAML. YAML добавляет такие возможности, как комментарии, многострочные строки, якоря и вложенность на основе отступов, что делает его более удобочитаемым. JSON строже и шире поддерживается API, тогда как YAML предпочтителен для файлов конфигурации, где важна читаемость.
Можно ли использовать табуляцию для отступов в YAML?
Нет. Спецификация YAML явно запрещает символы табуляции для отступов. Необходимо использовать пробелы, и количество пробелов на каждый уровень отступа должно быть одинаковым в пределах документа. Большинство редакторов можно настроить на вставку пробелов при нажатии клавиши Tab.
Поддерживает ли валидатор многодокументный YAML?
Да. Файлы YAML могут содержать несколько документов, разделённых тройным дефисом. Валидатор анализирует каждый документ независимо и сообщает об ошибках с правильными номерами строк относительно всего файла.