编写复杂YAML时,锚点能否在首次使用位置之外定义?
YAML锚点能不能单独定义,不用内联在首次引用处?
答案是完全可以——你不需要把&锚点定义在首次出现的重复节点里,反而可以把锚点单独放在文档的开头、末尾,甚至是一个独立的节点块中,就像主代码里调用的子函数一样。这样所有引用的地方都用*来调用,配置会更对称,可读性拉满。
举个Bitbucket Pipelines的实际例子
比如把复用的构建步骤提前定义在文档最开头:
# 提前定义好复用的步骤锚点 &shared_build - step: name: 安装依赖并构建 image: node:18 script: - npm install - npm run build artifacts: - dist/** # 各个分支流水线直接引用 pipelines: branches: main: - *shared_build - step: name: 部署生产环境 script: npm run deploy-prod develop: - *shared_build - step: name: 部署测试环境 script: npm run deploy-test
要注意的小细节
- YAML是顺序解析的,所以锚点的
&定义必须在所有*引用之前,放在文档开头是最省心的做法。 - 要是想把锚点放末尾,得确保所有引用都在定义前面,不然会解析报错。
- 这种写法完全符合YAML规范,Bitbucket Pipelines这类工具也能完美识别,不用担心兼容性问题。
内容的提问来源于stack exchange,提问作者benjimin
相关产品推荐
相关产品推荐

