在上一篇我們得知了Github Actions的workflow會用YAML格式撰寫
在這篇我們會了解一下YAML的基本語法,以及一些注意事項
如果是空格開始、結束,或包含空格的字串,應使用單引號把它包住。包含特殊符號的字串也要
# 單行字串
name: Tempura
fullName: 'Tempura Ninja'
如果文字有多行,就要使用保留換行(|),或者摺疊換行(>)
前者會保留所有換行,並把所有換行轉為\n,後者則只在結尾有\n
# 保留換行
content:|
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Perferendis beatae nostrum necessitatibus officiis labore.
#相當於
# Lorem ipsum dolor sit amet consectetur adipisicing elit.\n Perferendis beatae nostrum necessitatibus officiis labore.\n
#摺疊換行
content:>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Perferendis beatae nostrum necessitatibus officiis labore.
#相當於
# Lorem ipsum dolor sit amet consectetur adipisicing elit.Perferendis beatae nostrum necessitatibus officiis labore.\n
其他基本型別的表達相當簡單
totalCount: 30
# 使用!!int強制轉為integer
totalValue: !!int "42"
使用ISO-8601標準,時間和時區可以不給
today: 2024-09-14
meetingTime: 2024-09-31T10:00:00-08:00
# true、1、on為true
truth=true
# false、0、off為false
lie=false
# null、~為null
noValue=null
profile:
name: Tempura
# 相當於
# {
# profile:{
# name: "Tempura",
# }
# }
hobbies:
- planting
- watching anime
# 相當於
# {
# hobbies: ['planting', 'watching anime']
# }
hobbies:
- planting
- watching anime:
- Kimetsu No Yaiba
錨點
用於複用,可以提高
文件的複用性
和維護性
使用&可以設置錨點,*則是引用錨點
default: &default
name: Default Name
age: 30
person1:
<<: *default
name: Alice
person2:
<<: *default
name: Bob
age: 25
# 相當於
# {
# "default": {
# "name": "Default Name",
# "age": 30
# },
# "person1": {
# "name": "Alice",
# "age": 30
# },
# "person2": {
# "name": "Bob",
# "age": 25
# }
# }
這個功能相當方便,只可惜儘管許多開發者許願希望開放在Github Actions能用,但目前Github Actions並不支援
大小寫敏感
name: Iris
Name: Penny
嚴謹的縮排
冒號後面一定要有一個空格,或者換行
如果沒有的話,key會被誤判成字串而報錯
YAML原生並不支援placeholder
placeholder並不是YAML原生
的標準規格
。我們能在Github Actions、Kubernetes之類的平台上用placeholder是因為它們有實作動態替換值的功能註解
# 這是註解