如何在天蓝色管道中传递变量模板以将模板扩展为参数

时间:2020-08-07 03:32:01

标签: azure-devops azure-pipelines azure-pipelines-yaml

我有一个在Yaml模板中声明的变量,例如

# File: vars.yml
variables:
- name: firstvar
  value:'first var value'
- name: secondvar
  value:'second var value'

在管道中,我正在使用扩展模板

trigger:
- none

extends:
  template: resource-template.yml
  paramters:
    uservariablestemplate: <i want to pass above variable yaml template here>

因为我的扩展模板使用了其他变量,所以应该在其中使用该用户定义的变量

    # File: resource-template.yml
   parameters:
   - name: uservariablestemplate
     type: string
     default: none

    resources:
      repositories:
      - repository: samplerepo
        type: git
        name: myproject/myrepo
    
    variables:
    - template: centralvariables.yml@samplerepo
    - template: <i want to use variable template from user here>
    
    steps:
     - script: echo "Testing resource template"

任何帮助将不胜感激。或任何其他解决方法来实现此目的。

1 个答案:

答案 0 :(得分:0)

您只需将变量模板文件名传递给参数。例如:

trigger:
- none

extends:
  template: resource-template.yml
  paramters:
    uservariablestemplate: vars.yml

然后在模板resource-template.yml中,使用${{parameters.uservariablestemplate}}检索变量模板。参见以下示例:

   parameters:
   - name: uservariablestemplate
     type: string
     default: none

   resources:
     repositories:
     - repository: samplerepo
       type: git
       name: myproject/myrepo
    
   variables:
   - template: centralvariables.yml@samplerepo
   - template: ${{parameters.uservariablestemplate}}
    
   steps:
    - script: echo "Testing resource template"

如果变量模板文件位于另一个仓库中。您需要在“回购资源”部分中定义回购。例如:

   parameters:
   - name: uservariablestemplate
     type: string
     default: none

   resources:
     repositories:
     - repository: samplerepo
       type: git
       name: myproject/myrepo
     
     - repository: variableRepo
       type: git
       name: myVariableRepo
    
   variables:
   - template: centralvariables.yml@samplerepo
   - template: ${{parameters.uservariablestemplate}}@variableRepo
    
   steps:
    - script: echo "Testing resource template"

更新:

要动态设置存储库名称,可以尝试使用runtime parameters。如下所示:定义运行时参数repo

trigger: none

parameters:
- name: repo
  type: string
  default: none

extends:
  template: resource-template.yml
  parameters:
    uservariablestemplate: vars.yml

然后,您可以在以下Yaml中使用${{parameters.repo}}来参考该仓库。

运行管道时。您将能够设置存储库名称:

enter image description here