Azure DevOps如何将库变量组的变量传递给YAML模板
问题根因
- 你定义在变量组中的
my-temp-var属于运行时变量,会在管道运行阶段才完成加载。而你当前使用的${{ variables['my-temp-var'] }}是编译时模板表达式,会在YAML预处理、模板展开的编译阶段就执行解析,此时变量组还未加载,自然无法获取到对应值。
解决方案
方案一:直接在模板中引用变量(推荐)
变量组在主管道声明后,作用域会覆盖整个管道以及引用的模板,不需要额外通过参数传递,直接在模板中用运行时变量语法调用即可:
- 主YAML无需传递
variableToTemplate参数,保留原有的变量组声明即可:
variables: - group: template-variable-group name: $(date:yyyyMMdd)$(rev:.r) stages: - stage: Build jobs: - job: buildWebApp displayName: Build Release pipeline for Discount Service on Master branch steps: - script: | echo Here we go displayName: 'Command Line Script' # 不需要传对应参数 - template: template.yaml
- 模板直接调用变量:
steps: - task: CmdLine@2 inputs: script: | echo Hello Hello Hello Hello Hello Hello echo $(my-temp-var) displayName: 'Run a two-line script'
方案二:坚持通过参数传递的调整方法
如果业务场景要求必须通过参数传递变量值,只需要修改主YAML中参数传递的语法,把编译时表达式改成运行时变量占位符即可:
- 主YAML参数传递修改为:
- template: template.yaml parameters: variableToTemplate: $(my-temp-var)
- 模板代码无需调整,运行时管道会自动解析参数中携带的变量占位符,输出正确的值。
内容的提问来源于stack exchange,提问作者VivekDev
相关产品推荐
相关产品推荐

