Azure devops 如何将列表作为构建参数传递给Azure DevOps Server 2019(在prem上)中的YAML模板? 例如,考虑下面的模板(例如XYZ.YML):

Azure devops 如何将列表作为构建参数传递给Azure DevOps Server 2019(在prem上)中的YAML模板? 例如,考虑下面的模板(例如XYZ.YML):,azure-devops,yaml,Azure Devops,Yaml,现在,假设我有以下azure-pipelines.yml文件: ... steps: ... - template: xyz.yml parameters: projects: ??? ... 如何从生成变量中输入projectstemplate参数?假设在构建时,我只想请求构建p1和p3。我该怎么做?检查以下示例: #xyz.yml parameters: projects: [] steps: - ${{ each project in paramete

现在,假设我有以下azure-pipelines.yml文件:

...
steps:
  ...
  - template: xyz.yml
    parameters:
      projects: ???
...

如何从生成变量中输入
projects
template参数?假设在构建时,我只想请求构建p1p3。我该怎么做?

检查以下示例:

#xyz.yml

parameters:
  projects: []

steps:
- ${{ each project in parameters.projects }}:
  - task: VSBuild@1
    displayName: Build ${{ project }}
    inputs:
      solution: ${{ project }}.sln
      ...
      ...

#azure-pipelines.yml

 steps:
 - template: xyz.yml
   parameters:
     projects: ["p1", "p3"]

您可以尝试使用stepList类型参数,并将相同的参数值传递给模板

例如:

parameters:
  projects: ['p1', 'p2', 'p3']

steps:
- ${{ each project in parameters.projects }}:
  - task: VSBuild@1
    displayName: Build ${{ project }}
    inputs:
      solution: ${{ project }}.sln
      ...
main.yaml:

parameters:
  - name: mySteplist
    type: stepList
    default:
    - task: CmdLine@2
      inputs:
        script: |
          echo Write your commands here
          
          echo Hello world1
    - task: CmdLine@2
      inputs:
        script: |
          echo Write your commands here
          
          echo Hello world2

trigger:
  - none

steps:
  - template: stepstem.yml
    parameters: 
      buildSteps:
      - ${{ parameters.mySteplist }}
    
  # - template: stepstem.yml
  #   parameters:
  #     buildSteps:  
  #     - bash: echo Test #Passes
  #       displayName: succeed
  #     - bash: echo "Test"
  #       displayName: succeed
  # - ${{ parameters.mySteplist }}
  - task: CmdLine@2
    inputs:
      script: |
        echo Write your commands here
        
        echo Hello world3
stepstem.yaml:

parameters:
- name: buildSteps # the name of the parameter is buildSteps
  type: stepList # data type is StepList
  default: []

steps:
  - ${{ parameters.buildSteps }}
  - task: CmdLine@2
    inputs:
      script: |
        echo Write your commands here
        
        echo Hello world tem
  - script: echo "hello"

所以,你可以使用VSBuild@1任务作为默认参数值,并可以在生成队列时更改它。

在哪里显示如何从生成变量传递列表?不支持将数组定义为变量,变量语法为
变量:{string:string}
。您当前只能使用参数定义数组:那么这应该是真正的答案-不可能将列表从build传递到YAML。这是一个大麻烦。Azure DevOps可以具有
split
功能,就像它具有
join
功能一样。这样,字符串就可以转换为列表。这真是一个令人沮丧的问题。中的产品团队提到“我们正准备在不久的将来发布一个功能,让您能够通过更复杂的结构。请继续关注!”。此外,您可以在网站上提交新建议。我们正在prem AzD上使用。新功能慢慢地向我们传播:-(这在Azure DevOps Server 2019中不起作用。2020 RC1已过期,因此在我们迁移到它之后,也许我可以使用它。但现在它无关紧要。@mark我担心您必须在DevOps Server 2020中使用它。这也是我的看法。但我仍然不明白您的建议如何帮助传播来自构建的列表parameter@mark对于示例代码,它是使用stepList作为生成参数并将其传递给模板。没有字符串列表类型。如果我误解了您的意思,请随时通知我。