Azure Yaml Pipelines - 模板的动态对象参数

Azure Yaml Pipelines - Dynamic object parameter to template

我想触发一个以对象作为参数的作业模板。 不幸的是,即使基于示例,我也找不到这样做的方法。 如果有人可以指导我如何实现这一点,我将不胜感激。

我想要实现的是用动态变量替换 ["DEPLOY", "CONFIG"] 部分:

  - template: job-template.yaml
    parameters:
      jobs: ["DEPLOY", "CONFIG"]

这是不可能的。 YAML 在这里非常有限,您可以阅读更多相关内容 here

Yaml variables have always been string: string mappings.

例如,您可以将参数定义为复杂类型

模板文件

parameters:
- name: 'instances'
  type: object
  default: {}
- name: 'server'
  type: string
  default: ''

steps:
- ${{ each instance in parameters.instances }}:
  - script: echo ${{ parameters.server }}:${{ instance }}

主文件

steps:
- template: template.yaml
  parameters:
    instances: 
    - test1
    - test2
    server: someServer

但是您无法做到这一点 dynamically/programmatically 因为您将创建的每个输出最终都将是简单的字符串。

您可以做的是作为字符串传递,然后使用 powershell 拆分该字符串。但这完全取决于您想要进一步 运行 什么,因为您将无法以这种方式简单地遍历 yaml 结构。您所能做的就是 运行 在 powershell 循环中做一些事情,但这对您来说可能还不够。

有一定的逻辑是可能的。见下文

- template: job-template.yaml
  parameters:
    param: ["DEPLOY", "CONFIG"]

并且在job-template.yaml文件中你可以定义。所以每个工作名称都会不同

parameters:
 param: []

 jobs:
 - ${{each jobName in parameters.param}}:
   - job: ${{jobName}}
     steps:
       - task: Downl......