变量复用
yaml
本身支持变量复用,但不支持跨文件变量复用。
云原生构建
扩展 yaml
自定义标签 reference
可以按属性路径引用变量值,可结合 include 跨文件使用。
TIP
- 第一层同名变量会被覆盖,不会合并。本地的
.coding-ci.yml
会覆盖include
中的变量,include
数组中后面的变量会覆盖前面的变量。 reference
支持嵌套引用,最多 10 层。
# 示例
a.yml
.val1:
echo1: echo hello
.val2:
friends:
- one:
name: tom
say: !reference [.val1, echo1]
.coding-ci.yml
include:
- ./a.yml
.val3:
size: 100
master:
push:
- stages:
- name: echo hello
script: !reference [.val2, friends, "0", say]
- name: echo size
env:
SIZE: !reference [".val3", "size"]
script: echo my size ${SIZE}
解析后相当于:
master:
push:
- stages:
- name: echo hello
script: echo hello
- name: echo size
env:
SIZE: 100
script: echo my size ${SIZE}
# 进阶示例
可以将流水线作为整体配置引用:
.common-pipeline:
- stages:
- name: echo
script: echo hello
master:
push: !reference [.common-pipeline]
test:
push: !reference [.common-pipeline]
解析后相当于:
master:
push:
- stages:
- name: echo
script: echo hello
test:
push:
- stages:
- name: echo
script: echo hello
# vscode配置
安装 vscode yaml (opens new window) 插件后,为了在 vscode
编写带自定义标签 reference
的 yaml
文件时不报错,需要如下配置:
setting.json
"yaml.customTags": [
"!reference sequence",
]
TIP
为避免编写时 yaml
插件根据 云原生构建
schema 把第一层变量名当做分支名,有错误提示,reference
所在的第一层变量名可用 .
开头,如:.val1
。
← include