Azure Pipelines的YAML参数是否可抽取到公共文件继承复用?
可行方案说明
完全可以通过公共YAML模板实现参数的统一复用,同时保留运行时UI修改参数的能力,无需使用变量实现。
方案1:仅提取公共参数到模板
适合需要保留各业务流水线自定义stage结构的场景。
- 首先创建公共参数模板文件
common-params.yml,内容如下:
parameters: - name: run_mode type: string default: custom - name: app_version type: string default: uat
- 在各业务流水线YAML中直接引用该模板即可继承所有参数,以
saving-account.yml为例:
name: savings # 引用公共参数模板 extends: template: common-params.yml stages: - stage: RunScript jobs: - job: script steps: - script: /mylocation/savings.sh -r ${{ parameters.run_mode }} -a ${{ parameters.app_version }}
loans-account.yml只需要修改script的脚本路径即可,无需重复定义参数。
方案2:完整封装公共流程(更推荐)
你的场景中所有流水线的stage结构完全一致,仅脚本路径不同,可以把整个流程都封装到公共模板,进一步减少重复代码:
- 创建公共流水线模板
common-pipeline-template.yml:
parameters: # 公共参数 - name: run_mode type: string default: custom - name: app_version type: string default: uat # 仅每个业务线不同的可变参数 - name: script_path type: string stages: - stage: RunScript jobs: - job: script steps: - script: ${{ parameters.script_path }} -r ${{ parameters.run_mode }} -a ${{ parameters.app_version }}
- 业务流水线仅需要传入唯一的可变参数即可,以
saving-account.yml为例:
name: savings extends: template: common-pipeline-template.yml parameters: script_path: /mylocation/savings.sh
loans-account.yml仅需修改script_path的值为/mylocation/loans.sh即可。
效果验证
两种方案的公共参数都会自动同步到流水线运行的UI界面,支持运行时手动修改,和直接把参数写在业务YAML中的使用体验完全一致。
内容的提问来源于stack exchange,提问作者stephen fernandes
相关产品推荐
相关产品推荐

