在Azure devops YAML中循环浏览动态模板参数

时间:2020-06-01 15:35:54

标签: azure-devops yaml

我想对作为参数传递的字符串数组执行一些操作(发布)。 关键是,此参数是动态的:

# pipeline.yml

- job: MyJob
    pool:
      [...]
    steps:
      - pwsh: |
          $affected = ['app-one', 'app-two'] # Here I hardcoded the array but in my real code this is set dynamically
          Write-Host "##vso[task.setvariable variable=affected;isOutput=true]$affected"
        name: setAffected
        displayName: 'Settings affected'

- template: ./build.yml
  parameters:
    affected: $[ dependencies.Affected.outputs['setAffected.affected'] ] # Here I pass the array of string to the template
# build.yml

parameters:
  affected: ''

jobs:
  - job: Build
    condition: succeeded('Affected')
    dependsOn: Affected
    pool:
      [...]
    variables:
      affected: ${{ parameters.affected }}
    steps:
      - ${{each app in $(affected)}}:
          - pwsh: |
              Write-Host "${{app}}"
      - ${{each app in parameters.affected}}:
          - pwsh: |
              Write-Host "${{app}}"

${{each app in $(affected)}}${{each app in parameters.affected}}都不起作用... 我该如何管理对每个数组项执行的某些操作?

谢谢

1 个答案:

答案 0 :(得分:1)

在模板表达式中,您可以访问参数 包含传入参数值的上下文。 此外,您还可以访问包含以下内容的变量上下文 YAML文件中指定的所有变量以及系统 变量。 重要,它没有运行时变量 就像存储在管道上或在开始运行时给出的那样。 模板扩展在运行的早期就发生了,因此这些变量 没有。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops