YAML 中級

Machine Learning 的 CI/CD

Ravi Bhadauria

Machine Learning Engineer

多行字串:區塊純量格式

  • 用於表示多行字串或文字區塊
    • 程式碼片段(shell 指令)
    • 段落(日誌)
    • 組態檔

YAML 區塊字串的階層圖,根節點「Block String」已反白。

Machine Learning 的 CI/CD

樣式指示符-實字

  • 實字樣式(|):保留換行與縮排
  • 適合書寫 shell 指令
commands: |
  echo "Running python script..."
  python3 script.py

YAML 區塊字串的階層圖,葉節點「Literal Style」已反白。

Machine Learning 的 CI/CD

實字樣式範例

以實字多行樣式撰寫的 YAML 範例。文字前有「|」符號。

以 YAML 實字多行樣式撰寫的輸出結果。

1 https://yaml-multiline.info/
Machine Learning 的 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」已反白。

Machine Learning 的 CI/CD

摺疊樣式範例

以摺疊多行樣式撰寫的 YAML 範例。文字前有「>」符號。

以 YAML 摺疊多行樣式撰寫的輸出結果。

1 https://yaml-multiline.info/
Machine Learning 的 CI/CD

吞吃指示符(Chomping)

  • 控制字串「結尾」的換行行為
  • 置於樣式指示符之後
  • clip:預設模式,結尾保留 1 個換行
    • 表示時不需額外符號

YAML 區塊字串的階層圖,葉節點「Clip Chomping indicator」已反白。

Machine Learning 的 CI/CD

吞吃指示符-strip

  • strip-):移除結尾所有換行

YAML 區塊字串的階層圖,葉節點「Strip Chomping indicator」已反白。

Machine Learning 的 CI/CD

strip 吞吃範例

以實字多行樣式並套用 strip 吞吃的 YAML 範例。文字前有「|-」符號。

以 YAML 實字多行樣式並套用 strip 吞吃的輸出結果。此設定會移除結尾所有換行。

1 https://yaml-multiline.info/
Machine Learning 的 CI/CD

吞吃指示符-keep

  • keep+):保留結尾所有換行

YAML 區塊字串的階層圖,葉節點「Keep Chomping indicator」已反白。

Machine Learning 的 CI/CD

keep 吞吃範例

以實字多行樣式並套用 keep 吞吃的 YAML 範例。文字前有「|+」符號。

以 YAML 實字多行樣式並套用 keep 吞吃的輸出結果。此設定不會移除結尾換行。

1 https://yaml-multiline.info/
Machine Learning 的 CI/CD

動態值注入

  • Expressions 可讓剖析器動態替換數值
  • 用途:
    • 環境變數
    • 參照 YAML 其他位置
  • 通常寫成 ${{ ... }}
database:
  host: ${{ config.database.host }}
  port: ${{ config.database.port }}
  username: ${{ config.database.username }}
  password: ${{ config.database.password }}
Machine Learning 的 CI/CD

多文件 YAML

  • 同一檔案包含多個獨立的 YAML 文件
  • 每個文件都包含有效的 YAML 內容
  • 便於依相關文件分組整理
  • 以三個破折號 ––– 分隔各文件
___
- name: John
  age: 30
___
- name: Jane
  age: 28
___
- name: Bob
  age: 35
  occupation: Developer
Machine Learning 的 CI/CD

總結

名稱 YAML 符號
實字樣式指示符 |
摺疊樣式指示符 >
strip 吞吃指示符
keep 吞吃指示符 +
Expressions ${{ ... }}
多文件 YAML –––
Machine Learning 的 CI/CD

一起來練習吧!

Machine Learning 的 CI/CD

Preparing Video For Download...