Средний уровень YAML

CI/CD для машинного обучения

Ravi Bhadauria

Machine Learning Engineer

Многострочные строки: блочный скалярный формат

  • Представление многострочного текста
    • Фрагменты кода (команды оболочки)
    • Абзацы (логи)
    • Файлы конфигурации

Иерархическая схема блочной строки YAML с выделенным корневым узлом «Block String».

CI/CD для машинного обучения

Индикаторы стиля — литеральный

  • Литеральный стиль (|): сохраняет переносы строк и отступы
  • Удобен для написания команд оболочки
commands: |
  echo "Running python script..."
  python3 script.py

Иерархическая схема блочной строки YAML с выделенным листовым узлом «Literal Style».

CI/CD для машинного обучения

Пример литерального стиля

Пример YAML-текста в литеральном многострочном стиле. Перед текстом стоит символ «|».

Вывод текста, записанного в литеральном многострочном стиле YAML.

1 https://yaml-multiline.info/
CI/CD для машинного обучения

Индикаторы стиля — свёртка

  • Стиль свёртки (>): удаляет переносы строк
  • Удобен для написания длинных сообщений в виде абзацев
message: >
  Successfully executed the code!
  All processes completed 
  without any errors.
  The results have been saved 
  in the designated
  output directory.

Иерархическая схема блочной строки YAML с выделенным листовым узлом «Fold Style».

CI/CD для машинного обучения

Пример стиля свёртки

Пример YAML-текста в многострочном стиле свёртки. Перед текстом стоит символ «>».

Вывод текста, записанного в многострочном стиле свёртки YAML.

1 https://yaml-multiline.info/
CI/CD для машинного обучения

Индикаторы обрезки

  • Управляют поведением переносов строк в конце строки
  • Добавляются после индикаторов стиля
  • clip: режим по умолчанию, один перенос строки в конце
    • Дополнительный символ не нужен

Иерархическая схема блочной строки YAML с выделенным листовым узлом «Clip Chomping indicator».

CI/CD для машинного обучения

Индикаторы обрезки — strip

  • strip (-): удаляет все переносы строк в конце

Иерархическая схема блочной строки YAML с выделенным листовым узлом «Strip Chomping indicator».

CI/CD для машинного обучения

Пример обрезки strip

Пример YAML-текста в литеральном многострочном стиле с обрезкой strip. Перед текстом стоит символ «|-».

Вывод текста, записанного в литеральном многострочном стиле YAML с обрезкой strip. Обрезка удаляет все переносы строк в конце.

1 https://yaml-multiline.info/
CI/CD для машинного обучения

Индикаторы обрезки — keep

  • keep (+): сохраняет все переносы строк в конце

Иерархическая схема блочной строки YAML с выделенным листовым узлом «Keep Chomping indicator».

CI/CD для машинного обучения

Пример обрезки keep

Пример YAML-текста в литеральном многострочном стиле с обрезкой keep. Перед текстом стоит символ «|+».

Вывод текста, записанного в литеральном многострочном стиле YAML с обрезкой keep. Обрезка не удаляет переносы строк в конце.

1 https://yaml-multiline.info/
CI/CD для машинного обучения

Динамическая подстановка значений

  • Выражения позволяют парсерам динамически подставлять значения
  • Применяются для:
    • Переменных окружения
    • Ссылок на другие части YAML
  • Как правило, записываются в виде ${{ ... }}
database:
  host: ${{ config.database.host }}
  port: ${{ config.database.port }}
  username: ${{ config.database.username }}
  password: ${{ config.database.password }}
CI/CD для машинного обучения

Многодокументный YAML

  • Несколько отдельных YAML-документов в одном файле
  • Каждый документ содержит корректный YAML
  • Удобно организовывать связанные документы
  • Документы разделяются тремя дефисами –––
___
- name: John
  age: 30
___
- name: Jane
  age: 28
___
- name: Bob
  age: 35
  occupation: Developer
CI/CD для машинного обучения

Итоги

Название Символ YAML
Индикатор литерального стиля |
Индикатор стиля свёртки >
Индикатор обрезки strip
Индикатор обрезки keep +
Выражения ${{ ... }}
Многодокументный YAML –––
CI/CD для машинного обучения

Давайте потренируемся!

CI/CD для машинного обучения

Preparing Video For Download...