YAML 进阶

面向机器学习的 CI/CD

Ravi Bhadauria

Machine Learning Engineer

多行字符串:块标量格式

  • 表示多行字符串或文本块
    • 代码片段(Shell 命令)
    • 段落(日志)
    • 配置文件

YAML 块字符串的层级图,根节点"块字符串"高亮。

面向机器学习的 CI/CD

样式指示符 - 文字

  • 文字样式(|):保留换行与缩进
  • 适合编写 Shell 命令
commands: |
  echo "Running python script..."
  python3 script.py

YAML 块字符串的层级图,叶子节点"文字样式"高亮。

面向机器学习的 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 块字符串的层级图,叶子节点"折叠样式"高亮。

面向机器学习的 CI/CD

折叠样式示例

使用折叠多行样式的 YAML 示例,文本前有">"符号。

使用折叠多行样式的 YAML 文本输出。

1 https://yaml-multiline.info/
面向机器学习的 CI/CD

吞行指示符(Chomping)

  • 控制字符串末尾换行的处理方式
  • 加在样式指示符之后
  • clip:默认模式,末尾保留 1 个换行
    • 无需额外符号

YAML 块字符串的层级图,叶子节点"Clip 吞行指示符"高亮。

面向机器学习的 CI/CD

吞行指示符 - strip

  • strip-):移除末尾所有换行

YAML 块字符串的层级图,叶子节点"Strip 吞行指示符"高亮。

面向机器学习的 CI/CD

strip 吞行示例

使用文字多行样式并带 strip 吞行的 YAML 示例,文本前有"|-"符号。

使用文字多行样式并带 strip 吞行的 YAML 文本输出。该模式会移除末尾所有换行。

1 https://yaml-multiline.info/
面向机器学习的 CI/CD

吞行指示符 - keep

  • keep+):保留末尾所有换行

YAML 块字符串的层级图,叶子节点"Keep 吞行指示符"高亮。

面向机器学习的 CI/CD

keep 吞行示例

使用文字多行样式并带 keep 吞行的 YAML 示例,文本前有"|+"符号。

使用文字多行样式并带 keep 吞行的 YAML 文本输出。该模式不会移除末尾换行。

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...