在YAML生成中使用任务组的Azure DevOps

时间:2019-07-18 07:37:44

标签: azure-devops azure-pipelines

我创建了一个任务组来封装某些功能。 如果使用常规版本,则可以通过常规向导添加任务组。

不幸的是,我需要在YAML内部使用任务组。我无法查看“旧”版本的YAML以查看应如何发生。

我尝试过的事情:

  - task: TaskGroupName@1
    displayName: 'RunTests' 
    inputs:
      TestConfiguration: 'some.xml'
      TestCaseFilter: $(TestCaseFilter)
      UnitTestFolders: $(UnitTestFolders)

2 个答案:

答案 0 :(得分:3)

根据docs,YAML管道中不支持任务组。

相反,在这种情况下,您可以使用templates

模板文档:See here

答案 1 :(得分:0)

您可以将参数'objects'传递到模板YAML文件中,以执行几乎所需的操作;我发现的唯一棘手的问题是每个实例参数'object'具有多个属性,并使用新的模板{{ each }}表达式对其进行迭代。

以下是我为该解决方案构造yaml文件的方式:

azure_pipelines.yml

pool:
  name: Hosted VS2017
  demands:
  - npm
  - msbuild
  - visualstudio
  - vstest

steps:
- template: azure_webapp_template.yml
  parameters:
    webapps:
    - name: Customer 1
      url: customer1.azurewebsites.net
    - name: Customer 2
      url: customer2.azurewebsites.net
    - name: Customer 3
      url: customer3.azurewebsites.net
    - name: Customer 4
      url: customer4.azurewebsites.net

正如您在上面看到的,我们正在创建一个对象webapps,然后为每个“ webapp”具有一些嵌套属性。

然后,在我们的“模板”中,我们可以迭代webapps参数中的每个对象,并在迭代任务中扩展属性。

azure_webapp_template.yml

# Proving ability to loop over params a number of times

parameters:
- name: 'webapps'
  type: object
  default: {}

steps:
- ${{ each webapp in parameters.webapps }}:

  - task: PowerShell@2
    displayName: 'Task Group Test 1 ${{webapp.name}}'
    inputs:
      targetType: 'inline'
      script: |
        Write-Host "Name: ${{webapp.name}} with url ${{webapp.url}}"
      failOnStderr: true
      workingDirectory: '$(Build.SourcesDirectory)'

  - task: PowerShell@2
    displayName: 'Task Group Test 2 ${{webapp.name}}'
    inputs:
      targetType: 'inline'
      script: |
        Write-Host "Name: ${{webapp.name}} with url ${{webapp.url}}"
      failOnStderr: true
      workingDirectory: '$(Build.SourcesDirectory)'