Язык YAML для GitHub Actions: Полный разбор синтаксиса с примерами

В этом видео вы узнаете, на каком языке пишутся Workflow для GitHub Actions и как разобраться с синтаксисом YAML (YML). Мы подробно разберём, что такое YAML, чем он похож на JSON, и как создавать структуры данных — строки, массивы, объекты, булевы значения и null.

*https://www.youtube.com/watch?v=C4MFrZgVKmA
**https://300.ya.ru/v_WJ3wWhms

таймкоды

00:00:00 Введение в YAML

  • Workflow для GitHub Actions пишется на YAML.
  • Расширение файлов: .yaml или .yml.
  • Рекомендуется изучить синтаксис YAML перед началом работы.

00:00:46 YAML и JSON

  • YAML относится к языкам сериализации данных, аналогично JSON.
  • Оба языка используются для хранения массивов информации.
  • Для лучшего понимания синтаксиса YAML можно использовать онлайн-генератор, который конвертирует YAML в JSON.

00:01:59 Структура YAML-документа

  • Весь документ YAML представляет собой корневой объект, как в JSON.
  • В YAML можно использовать комментарии для дополнительной информации.
  • Пример кода показывает различные типы данных: строки, объекты, массивы, boolean.

00:02:58 Передача параметров

  • Параметры передаются в формате «ключ, значение».
  • Можно использовать одинарные и двойные кавычки для строк.
  • Специальные символы, такие как «собака», «двоеточие», «точка с запятой», требуют экранирования.

00:05:02 Массивы в YAML

  • Массивы задаются с помощью ключа, двух пробелов и знака тире.
  • Пробелы важны для синтаксиса, их нужно внимательно использовать.
  • Массивы можно передавать в формате JSON.

00:06:58 Типы данных в YAML

  • Boolean задаётся ключевым словом «boolean» и значениями «true» или «false».
  • Null задаётся ключевым словом «null» или специальным символом.
  • Объекты задаются без использования тире, с двумя пробелами между ключами и значениями.

00:08:02 Вложенные объекты

  • Вложенные объекты создаются путём добавления двух пробелов или нажатия Tab.
  • Внутри вложенного объекта можно создавать новые объекты.

00:09:10 Перенос строк

  • Перенос строк в YAML осуществляется с помощью специального символа.
  • Символ «-» убирает перенос строки в конце строки.

00:10:24 Рекомендации по работе с YAML

  • Инструкции для Workflow пишутся с использованием синтаксиса YAML.
  • Рекомендуется установить плагин YAML для редактора, чтобы автоматически подсвечивать ошибки форматирования и синтаксиса.
  • Ошибки в редакторе подсвечиваются, но без плагина их сложно обнаружить.

В этом видео

Что за язык используется для GitHub Actions
0:00
в предыдущем уроке мы увидели пример
0:01
простого workflow и первый вопрос У вас
0:04
возник А что за язык использован для его
0:07
написания Итак workflow для github
0:09
Action мы должны писать на yaml
0:12
расширение файлив у него следующая точка
0:15
iml либо точка Y aml то есть
0:21
yaml либо просто yml три либо четыре
0:24
буквы Вы можете встречать и такие
0:26
расширения и такие Я как правило пишу с
0:28
тремя буквами значит если вы уже знакомы
YAML и его связь с JSON
0:32
с синтаксисом написания на yel можете
0:35
пропускать данный урок Если же нет то
0:37
рекомендую посмотреть данную
0:38
видеоинструкции поскольку писать свой
0:40
первый workflow не зная синтакс саму в
0:43
принципе очень сложно и невозможно ял
0:46
относится к языкам сериализации данных
0:49
один подобный язык вы уже знаете 100% вы
0:52
работали с Jon форматом и с файлика JS
0:55
так вот JS тоже принадлежит к этой
0:57
категории языкам это не языки
1:00
программирования это больше языки для
1:02
содержания даты То есть для содержания
1:05
каких-то массивов информации и эта
1:08
информация Может быть у нас представлена
1:11
различных типов например массивы объекты
1:14
строки целые числа и так далее так вот
1:17
чтобы Лучше понимать синтаксис этого
1:20
урока мы будем смотреть его в аналогии с
1:24
языком Jon поэтому я открою и в
1:27
материалах к уроку обязательно доба
1:30
данную ссылку но вы можете и
1:31
самостоятельно найти это онлайн
1:34
генератор который генерирует код из yaml
1:37
в код J и поскольку с J наверняка все из
1:41
вас уже сталкивались и работали вы
1:44
будете Лучше понимать
1:47
синтаксис написания кода на yel в
1:50
отличие от Jon в yel мы ребята можем
1:52
использовать комментарии это очень
1:54
удобно потому что определённые части
1:56
кода можно дополнительно
1:58
прокомментировать Итак давайте мы наш
Основные типы данных YAML
2:01
код который мы использовали для workflow
2:03
скопирую и посмотрим как он у нас будет
2:05
выглядеть в формате Jon Обратите
2:08
внимание весь документ ял — это наш
2:12
корневой объект как в джейсоне поскольку
2:15
J — это у нас один корневой объект
2:18
значит в ял тоже самое весь код который
2:21
мы пишем по сути является одним целым
2:23
объектом И как мы видим наши инструкции
2:26
содержат различные форматы Ну например
2:28
Здесь не строка потом у нас некий объект
2:32
Далее в этом объекте есть другой объект
2:35
также присутствует и массив Обратите
2:38
внимание квадратные скобочки также
2:40
присутствует тип бун True у нас здесь
2:44
находится Давайте по очерёдности
2:46
пройдёмся и ручками пропишет все эти
2:49
типы таким образом они лучше запомнятся
2:52
значит передавать параметры мы можем
2:54
простым методом ключ
2:57
значения Как видите уних конвертирует
3:00
формат J мы можем также и в формате J
3:03
задавать ключ значения например в
3:07
кавычках таким вот
3:09
образом в кавычках и значения передаём
3:12
Как видите он их тоже прекрасно понимает
3:15
если мы хотим использовать ординарные
3:17
кавычки пожалуйста без никаких
3:23
проблем мы используем ординарные кавычки
3:26
он их тоже прекрасно понимает если мы
3:29
хотим
3:30
в качестве ключа задавать числа и в
3:32
качестве значения тоже целое число без
3:35
проблем Это тоже можно делать он это
3:37
дело тоже будет понимать предположим у
3:40
нас Задача В наше значение также
3:42
использовать ординарные кавычки и внутри
3:45
Ну предположим у нас здесь есть некое
3:47
слово тест и оно у нас должно быть в
3:50
кавычках как мы его тогда в этом случае
3:53
передадим видите если я их добавляю то
3:55
ошибка чтобы экранировать эти ординарные
3:59
кавычки я ещё раз добавляю ординарные
4:01
кавычки то есть
4:14
экранирующий образом значит задам новый
4:17
ключ уберу
4:20
экранирование и просто уберу вот эти
4:23
кавычки то есть текст я буду передавать
4:26
без кавычек и тогда он его тоже будет
4:29
понимать уже сами решайте какой
4:31
синтаксис вам использовать если я хочу
4:34
использовать какие-то специальные
4:35
символы это те символы на клавиатуре там
4:38
где у вас Циферки такие как собака д
4:41
точи точка запятой звёздочка и так далее
4:45
как их в нашем случае передать Ну
4:47
предположим У нас есть некий ключ А в
4:50
качестве значения У нас например
4:52
name АК вот такого формата да то есть
4:56
мне нужно вот эту строку хранить её
Как писать массивы и объекты
5:00
под ключом
5:01
K4 ключевое слово строка То есть если я
5:04
хочу это хранить как строку так я должен
5:07
её сделать строкой значит в этом случае
5:09
я могу её в кавычках передавать и тогда
5:13
он видите тоже будет её понимать Теперь
5:16
давайте определимся как задавать массивы
5:19
значит предположим У меня есть массив И
5:21
я хочу задать массив здесь первое что
5:24
нужно сделать пишем ключ дальше
5:26
переносим строку и добавляем два пробела
5:30
после этого добавляем знак тире и пишем
5:35
значение первого элемента который у нас
5:37
в
5:38
массиве и у нас генерируется как вы
5:41
видите массив в котором один элемент
5:44
тест если нужно два элемента
5:46
Следовательно переносим строку добавляем
5:49
тире и пишем тест 2 вот таким образом и
5:53
у нас сейчас создаётся массив с двумя
5:55
элементами теперь Обратите внимание что
5:58
здесь я д пробела с пробелами нужно
6:02
внимательно потому что для синтаксиса
6:04
это важно Ну например вот здесь мы без
6:06
проблем можем пробелы ставить он их
6:08
будет понимать но когда пробел у нас
6:10
идёт перед ключевым словом вот в этом
6:14
случае нужно к этому внимательно
6:16
относиться также мы массивы в принципе
6:18
можем и вот как в формате J такого вида
6:21
тоже передавать
6:23
значит предположим у на есть в качестве
6:28
люча и Обрати внимание ошибка потому что
6:31
я нажал enter но не убрал эти пробелы
6:34
теперь я их
6:37
убрал массив я пишу таким вот образом в
6:40
квадратных скобочках первый элемент тест
6:43
второй элемент тест 2 и он нам
6:45
генерирует абсолютно тоже самое то есть
6:48
два разных синтаксиса можно использовать
6:50
тот который вам наиболее
6:52
комфортен также Следуй Тип который можем
6:55
передавать
6:58
это включая используем ключевое слово
7:00
buan и тип bu задаётся True fse вот
7:04
таким вот образом видите сразу
7:06
подсвечивается потому что даже этот
7:08
онлайн генератор точнее онлайн конвертер
7:12
понимает что это у нас тип бун либо fse
7:15
либо True если нужно использовать тип Ну
7:20
можно сделать это следующим
7:23
образом пишем ключевое слово Ну и он его
7:27
будет генерировать также есть ещё один
7:28
способ передачи Ну делается он при
7:32
помощи специального символа он при
7:34
помощи этого символа он тоже будет его
7:38
понимать как нул вернусь немножечко выше
7:41
Здесь где мы использовали массивы забыл
7:43
продемонстрировать и объекты Значит мы
7:46
точно также можем и объекты задавать
7:50
значит абсолютно тоже самое два пробела
7:54
либо Tab но не используем тире пишем
7:57
сразу ключ значит
Примеры вложенных структур
8:02
вот таким вот
8:03
образом Если два параметра значит второй
8:08
ключ и его значение если нам внутри
8:14
этого объекта нужен ещё один объект
8:17
Значит мы ещё два раза добавляем два
8:20
провела либо нажимаем Tab и напишу Новый
8:25
объект этот Новый объект у меня уже
8:28
будет яв
8:30
об и в НМ Бут следующее
8:40
значения Пардон Здесь было лишнее та
8:44
значит возвращаю
8:46
обратно
8:49
и пробелы нам нужны только вот здесь и
8:53
таким образом мы получаем е и вложенный
8:56
объект в принципе что касается основного
8:59
синтаксиса этого будет достаточно каждый
9:01
раз если вы тоже будете использовать
9:03
этот конвертер для того чтобы поиграться
9:06
и потестить вы увидите уже небольшую
9:09
инструкцию вот мы комментарии не
9:11
протестировали далее Что здесь ещё
9:14
интересного это когда нам нужно
9:16
использовать Перенос строки можем вот
9:18
таким вот образом использовать тоже вот
9:20
интересная система мы ставим ссылку
9:22
указатель на объект и потом используем
9:26
эту ссылку Что ещё у нас здесь интересно
9:30
когда нам нужно обратить внимание Наш
9:32
текст писать вот так С новой строки но
9:35
если мы его будем вот так писать он его
9:37
будет понимать как инструкция А чтобы
9:39
этого не было мы задаём вот этот
9:41
дополнительный символ и Обратите
9:43
внимание здесь у нас есть минус этот
9:46
минус убирает в конце вот этот символ
9:49
переноса строки то есть Обратите
9:51
внимание мой ключ контент Вот он в json
9:54
формате выглядит таким образом если
9:56
убрать этот минус то здесь после слова
9:59
Space добавляется символ переноса строки
Особенности форматирования и переносов строк
10:01
поскольку он здесь у нас присутствует
10:03
Если необходимо его убирать добавляется
10:06
специальный символ то же самое и здесь
10:08
Обратите внимание параграф имеет в конце
10:12
перенос если его нужно убрать значит
10:15
убирается это дело вот таким вот образом
10:17
и сейчас его нету Как вы видите ничего
10:21
сложного в данном синтаксе нет к нему
10:23
просто нужно привыкнуть знаете что
10:25
инструкции для workflow пишется с
10:28
использованием данного синтаксиса его
10:30
стоит выучить если вы с ним ещё не
10:33
сталкивались Конечно вы не будете его
10:36
писать через такие онлайн-редактор это
10:38
было только для демонстрации в уроке вы
10:40
его будете писать через редактор и я вам
10:42
рекомендую установить дополнительный
10:44
плагин который называется ял для того
Рекомендации по плагинам для редактора
10:47
чтобы когда вы будете писать этот код в
10:49
редакторе все ошибки которые вы будете
10:52
совершать ошибки по форматированию по
10:54
синтаксису чтобы они у вас сразу
10:57
подсвечивать и вы понимали где ошибка
10:59
Потому что сейчас в редакторе они
11:02
подсвечиваются нам выдают об ошибки но
11:04
если вы не Установите данное расширение
11:07
вы просто не будете понимать что там
11:09
присутствует ошибка в принципе на этом
11:12
всё увидимся в следующем уроке

Поделиться: